当我使用WinINet API 的HttpSendRequest方法发出 HTTP 请求时,响应发送“ ”,WinINet API 自动遵循重定向指令并发出新请求。302: Moved Temporarily
那么,如何防止 HttpSendRequest 跟随重定向(30x 状态码)?
我不想发出两个请求……我不想得到它在标题中带有状态码 302 的第一个响应。
当我使用WinINet API 的HttpSendRequest方法发出 HTTP 请求时,响应发送“ ”,WinINet API 自动遵循重定向指令并发出新请求。302: Moved Temporarily
那么,如何防止 HttpSendRequest 跟随重定向(30x 状态码)?
我不想发出两个请求……我不想得到它在标题中带有状态码 302 的第一个响应。
我找到了INTERNET_FLAG_NO_AUTO_REDIRECT
必须传递给的标志HttpOpenRequest
。
但是,它不起作用......
如果您能够改用 WinHTTP(链接),则可以防止重定向。
尝试INTERNET_FLAG_NO_AUTO_REDIRECT
在调用中使用HttpSendRequest
. 听起来你正试图从HttpOpenRequest
.
我将此标志与 一起使用InternetOpenUrl
,并且它在该调用中正常工作。
似乎 WinInet 的行为很大程度上取决于函数调用中的lpszAgent
指定。InternetOpen
当您通过时,"Mozilla/5.0 (compatible)"
所有重定向都将被忽略,并且您将在读取响应时获得 RAW HTML 结果InternetReadFile
。
另一方面,如果您需要“重定向”输出,则必须在 Agent 参数中指定您的应用程序名称,例如"ConEmu Update"
.