WinINet:如何防止 HttpSendRequest 遵循重定向(30x 状态代码)?

发布于 2024-07-13 19:28:20 字数 333 浏览 7 评论 0原文

当我使用方法 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

玻璃人 2024-07-20 19:28:20

我发现了一个必须传递给 HttpOpenRequest 的标志 INTERNET_FLAG_NO_AUTO_REDIRECT

但是,它不起作用......

I found a flag INTERNET_FLAG_NO_AUTO_REDIRECT that I must pass to HttpOpenRequest.

But, it isn't working....

我做我的改变 2024-07-20 19:28:20

如果您能够使用 WinHTTP,则可以阻止重定向 (链接)。

Redirection can be prevented if you are able to use WinHTTP instead (link).

春花秋月 2024-07-20 19:28:20

尝试在对 HttpSendRequest 的调用中使用 INTERNET_FLAG_NO_AUTO_REDIRECT。 听起来您正在尝试从 HttpOpenRequest 使用它。

我将此标志与 InternetOpenUrl 一起使用,并且它在该调用中正常工作。

Try using INTERNET_FLAG_NO_AUTO_REDIRECT in the call to HttpSendRequest. Sounds like you're trying to use it from HttpOpenRequest.

I use this flag with InternetOpenUrl, and it works properly in that call.

不及他 2024-07-20 19:28:20

看起来 WinInet 行为很大程度上取决于 InternetOpen 函数调用中指定的 lpszAgent。 当您传递“Mozilla/5.0(兼容)”时,所有重定向都将被忽略,并且在使用InternetReadFile读取响应时您将获得原始HTML结果。

另一方面,如果您需要“重定向”输出,则必须在 Agent 参数中指定您的应用程序名称,例如 “ConEmu Update”

Seems like WinInet behavior largely depends of lpszAgent specified in the InternetOpen function call. When you pass "Mozilla/5.0 (compatible)" all redirects are ignored and you will get RAW HTML result when reading response with InternetReadFile.

On the other hand, if you need "redirected" output, you must specify your application name in the Agent argument, for example "ConEmu Update".

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文