编辑:
我发现了问题,但不确定为什么会发生这种情况。每当我查询:最后http://localhost:4001/hello/带有“ ”时 - 我都会得到正确的 200 状态响应。/我不懂为什么。
原帖:
每当我向我的应用程序发送查询时,我都会收到 307 重定向。如何让我的应用返回常规状态 200,而不是通过 307 重定向
这是请求输出:
abm | INFO: 172.18.0.1:46476 - "POST /hello HTTP/1.1" 307 Temporary Redirect
abm | returns the apples data. nothing special here.
abm | INFO: 172.18.0.1:46480 - "POST /hello/ HTTP/1.1" 200 OK
Run Code Online (Sandbox Code Playgroud)
pytest 返回:
E assert 307 == 200
E + where 307 = <Response [307]>.status_code
test_main.py:24: AssertionError
Run Code Online (Sandbox Code Playgroud)
在我的根目录:/__init__.py文件:
from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
# from .configs import …Run Code Online (Sandbox Code Playgroud) 这是使用301/303/307重定向到动态短网址的后续问题,我尝试确定在目标网址频繁更改时实施短网址重定向的最佳方法.
虽然看起来301和307重定向都以相同的方式执行,但我关注的问题是301重定向缓存(如此处所述) - 是避免使用307重定向的最佳方法(我假设307重定向永远不会缓存?),或显式发送无缓存标头("缓存控制:无缓存,必须重新验证")?
redirect caching no-cache http-status-code-301 http-status-code-307
我想知道301和307重定向之间的区别.
我希望通过home-brew url重定向器生成反向链接,我希望任何"链接汁"或"页面排名果汁"直接从原始页面流到最终URL,但如果其中一个原始的后台页面变坏了,我希望能够通过删除该特定页面的重定向链接来关闭该链接.合理?
我的理解是301是永久性的意思,谷歌将看到301并将其缓存的URL更新为最终目的地,无论我是否在以后杀死该重定向.
如果我使用307,它将不会缓存目标网址,并会继续检查重定向网址,以查看反向链接实际指向的位置,如果我取消重定向链接,Google将不会再将该链接分配给目标网址.
这是正确的总结吗?
url redirect url-shortener http-status-code-301 http-status-code-307
是否可以307 Temporary Redirect从ASP.NET MVC中的控制器返回?
我有时需要POST将从一个表单提交的值重新设置为另一个URI.
使用JavaScript在客户端进行选择(从而绕过此问题)不是一种选择.
通过a重定向GET不是一个选项,因为发布的数据包含一个8k字符串,这可能意味着URI对于某些(很多?)浏览器来说太长了.
这甚至可能吗?
考虑以下情况:
<sessionState cookieless="AutoDetect" />.HttpWebRequest(无cookie)将数据发布到它.这个看似简单的案例导致重大失败.
由于.NET无法确定请求代理(HttpWebRequest)是否支持cookie,因此它会响应POST请求,并将302 Found重定向到同一位置:
AspxAutoDetectCookie响应中指定的cookieAspxAutoDetectCookie在转发位置中命名的查询参数然后请求代理请求新位置,这样HttpWebRequest做.当.NET AspxAutoDetectCookie在查询字符串中看到时,它知道这是一个重新请求,它可以通过查看命名的cookie AspxAutoDetectCookie是否在请求标头中来确定是否支持cookie .
问题是,大多数请求代理(Web浏览器HttpWebRequest)将302 Found视为303 See Other并将重新请求设置为GET,而不管原始HTTP方法如何!在初始POST请求中发送的任何数据都不会被转发.
正确的响应应该是307临时重定向,它不会更改请求方法.(对位置X的POST请求重定向到位置Y 的POST请求.)
有没有办法在.NET中更改此行为,以便POST请求不被销毁?
.net asp.net cookieless http-status-code-302 http-status-code-307
我们正在实施一个短网址服务,其中重定向目标将每天更改.网址将由移动设备访问,并始终是GET请求.我试图了解哪种是最适合工作的300型重定向.
AFAIK大多数网址缩短服务使用301重定向(永久移动).但是,根据规格,303(见其他)和307(暂时移动)重定向似乎是为我们的案例设计的......
redirect http url-shortener http-status-code-301 http-status-code-307
我正在发出一个GET请求,然后将307重定向到另一个URL,并从那里进行另一个302重定向,依此类推,直到它到达请求的页面.我在从第一个重定向中提取URL时遇到问题,307,我想看到重定向到的位置.我使用Rest Assured作为框架.谢谢!
java redirect http-redirect http-status-code-307 rest-assured
除了 Location 之外,是否真的不能添加/修改 307 标头?我正在尝试在 Node.js 中执行此操作,并且客户端似乎未使用新添加的标头 'X-Atlassian-Token': 'no-check' 。
res.writeHead(307,
{
'Location': 'http://www.mytest.com?os_authType=basic',
'Content-Type': 'multipart/form-data',
'X-Atlassian-Token': 'no-check'
});
res.end();
Run Code Online (Sandbox Code Playgroud)
有人在 Stackoverflow 上问了同样的问题,其中一个人回答说:
是否可以在 http 重定向(302 或 307)时设置一些 http 标头?
“实际上,通过 Java 对象,您可以设置请求属性,但不能设置标头。我自己正在寻找这个问题的答案。我相信这是一个故意的限制,以防止伪造身份验证令牌和通过标头发送的其他信息。我将发布如果我找到解决方案的话。”
我有一个对 script1.php 的发布请求,该请求以 307 状态重定向到 script2.php 一个具有在 script1.php 中收到的相同数据的发布请求,我的问题是是否可以在进行之前更改 script1.php 中的发布数据在 script2.php 中重定向 so 以接收新的帖子数据?状态不一定是 307,但据我所知,仅通过此状态,您可以重定向发布请求,但无法更改数据。
谢谢你!
php redirect response.redirect response http-status-code-307
将我的 .NET Core 2.2 API 升级到 .NET Core 3.1 时,需要进行大量更改。我不得不更新 Swashbuckle 包并更改启动文件。我现在使用 Swagger 在开发中运行它。
一旦发布到在 IIS 上运行的 Windows 2012 服务器,每个 API 调用都会返回 307 临时重定向。
在启动中,我必须删除 UseMvc 并添加 UseEndpoints
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
else
{
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
if (!env.IsProduction())
{
app.UseSwagger();
app.UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "Digital Signatures V1"); });
}
app.UseMiddleware<LogContextMiddleware>();
app.UseMiddleware<CustomExceptionMiddleware>();
app.UseHttpsRedirection();
app.UseRouting();
app.UseEndpoints(endpoints =>
{
endpoints.MapControllers();
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道为什么我得到这个重定向状态?
在 …
我们有一个php页面,可能需要一些时间来加载,响应时间可能超过30秒,它有一个沉重的脚本,这是正常的,不向公众开放。该页面每次执行时都会在数据库中保存一条日志,我注意到,当页面加载速度很快时,日志会保存一次,但如果响应时间较长,日志会保存两次。
奇怪的是,这只发生在Chrome中,当在Firefox上打开页面时,即使加载时间很长,日志也会保存一次。这让我推断,当响应时间很长时,Chrome 会执行该页面两次。
在检查 Chrome 中的网络后,我发现实际上 Chrome 加载了两次页面:
第一次被取消,然后重定向(307),最后加载。(在他的例子中,加载时间超过一分钟,但这很正常)
该重定向不是 307 临时重定向,而是 307内部重定向。经过更多挖掘后,事实证明 Chrome 实际上有一个执行此重定向的扩展(请参阅 @Rob W. 307 Redirect whenloadinganalytics.js in Chrome 的答案)
问题是:
谢谢!
我正在使用带有 urllib 的 Python 3.7。一切工作正常,但当它收到 http 重定向请求(307)时,它似乎没有自动重定向。
这是我得到的错误:
ERROR 2020-06-15 10:25:06,968 HTTP Error 307: Temporary Redirect
Run Code Online (Sandbox Code Playgroud)
我必须用 try- except 来处理它,并手动向新位置发送另一个请求:它工作正常,但我不喜欢它。
这些是我用来执行请求的代码片段:
req = urllib.request.Request(url)
req.add_header('Authorization', auth)
req.add_header('Content-Type','application/json; charset=utf-8')
req.data=jdati
self.logger.debug(req.headers)
self.logger.info(req.data)
resp = urllib.request.urlopen(req)
Run Code Online (Sandbox Code Playgroud)
url 是一个 https 资源,我设置了一个带有一些授权信息和内容类型的标头。req.data 是一个 JSON
从 urllib 文档中我了解到重定向是由库本身自动执行的,但它对我不起作用。它总是引发 http 307 错误并且不遵循重定向 URL。我还尝试使用指定默认重定向处理程序的开启器,但结果相同
opener = urllib.request.build_opener(urllib.request.HTTPRedirectHandler)
req = urllib.request.Request(url)
req.add_header('Authorization', auth)
req.add_header('Content-Type','application/json; charset=utf-8')
req.data=jdati
resp = opener.open(req)
Run Code Online (Sandbox Code Playgroud)
可能是什么问题呢?
需要一些帮助来理解这两个重定向之间的区别是:
header( "HTTP/1.1 307 Temporary Redirect" );
header( "Location: http://www.someurl.com/" );
Run Code Online (Sandbox Code Playgroud)
要么
header( "Location: http://www.someurl.com/" );
Run Code Online (Sandbox Code Playgroud)
使用HTTP标头在第二种情况下会发生什么?默认情况下有任何设置,或者如果我想暂时重定向某些内容,那是错误的吗?
第二个是错的还是两者没有实际差异?如果我只使用"位置",则无法找到默认情况下发送的HTTP标头的任何文档.
提前致谢
redirect ×8
http ×4
php ×3
python ×2
.net ×1
api ×1
asp.net ×1
asp.net-mvc ×1
caching ×1
cookieless ×1
fastapi ×1
http-headers ×1
java ×1
no-cache ×1
node.js ×1
response ×1
rest ×1
rest-assured ×1
url ×1
urllib ×1