WinINet:如何防止 HttpSendRequest 遵循重定向(30x 状态代码)?
当我使用方法 HttpSendRequestWinINet API 的 > 以及响应发送“302: Moved Temporarily
”,WinINet API 会自动遵循重定向指令并发出新请求。
那么,如何防止 HttpSendRequest 遵循重定向(30x 状态代码)?
我不想发出两个请求...我不想得到它通过其标头中的状态代码 302。
When I make an HTTP request with the method HttpSendRequest of the WinINet API, and the response sends "302: Moved Temporarily
", the WinINet API automatically follows the redirection instruction and makes a new request.
So, How to prevent HttpSendRequest to follow redirects (30x Status Codes)?
I don't want't to make two requests... I wan't to get the the first response it got with the status code 302 in it's header.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我发现了一个必须传递给
HttpOpenRequest
的标志INTERNET_FLAG_NO_AUTO_REDIRECT
。但是,它不起作用......
I found a flag
INTERNET_FLAG_NO_AUTO_REDIRECT
that I must pass toHttpOpenRequest
.But, it isn't working....
如果您能够使用 WinHTTP,则可以阻止重定向 (链接)。
Redirection can be prevented if you are able to use WinHTTP instead (link).
尝试在对
HttpSendRequest
的调用中使用INTERNET_FLAG_NO_AUTO_REDIRECT
。 听起来您正在尝试从HttpOpenRequest
使用它。我将此标志与
InternetOpenUrl
一起使用,并且它在该调用中正常工作。Try using
INTERNET_FLAG_NO_AUTO_REDIRECT
in the call toHttpSendRequest
. Sounds like you're trying to use it fromHttpOpenRequest
.I use this flag with
InternetOpenUrl
, and it works properly in that call.看起来 WinInet 行为很大程度上取决于
InternetOpen
函数调用中指定的lpszAgent
。 当您传递“Mozilla/5.0(兼容)”
时,所有重定向都将被忽略,并且在使用InternetReadFile
读取响应时您将获得原始HTML结果。另一方面,如果您需要“重定向”输出,则必须在 Agent 参数中指定您的应用程序名称,例如
“ConEmu Update”
。Seems like WinInet behavior largely depends of
lpszAgent
specified in theInternetOpen
function call. When you pass"Mozilla/5.0 (compatible)"
all redirects are ignored and you will get RAW HTML result when reading response withInternetReadFile
.On the other hand, if you need "redirected" output, you must specify your application name in the Agent argument, for example
"ConEmu Update"
.