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