1

我正在使用 aWebRequest来阅读 HTML 网站。服务器似乎正在重定向我的请求。

我的代码类似于以下内容:

    String URI = "http://www.foo.com/bar/index.html"
    WebRequest req = WebRequest.Create(URI);
    WebResponse resp = req.GetResponse();
    StreamReader sr = new StreamReader(resp.GetResponseStream());
    String returnedContent = sr.ReadToEnd();

当我检查它的内容时,returnedContent它包含来自重定向的内容,如“http://www.foo.com/FOO_BAR/index.html”。我确定我请求的 URL 存在,因为它是收到的响应的一部分(作为 IFrame)。

有没有办法防止WebResponse重定向并获取请求的 url 的内容?

更新

设置req.AllowAutoRedirect = false导致302 Found状态代码,但不传递实际内容。

更多详细信息:我请求的 url 是http://www.foo.com/bar/index.html我收到的内容位于http://www.foo.com/FOO_BAR/index.html

响应与此类似:

<body>
    <div>
        <iframe src="/foo/index.html"></iframe>
    </div>
</body>
4

2 回答 2

9

您可以使用HttpWebRequest'AllowAutoRedirect属性

…
var req = (HttpWebRequest)WebRequest.Create(URI);
req.AllowAutoRedirect = false;
…
于 2012-12-23T16:01:45.803 回答
0

我知道这是一个相当老的帖子,但我想我会分享我在特定情况下发现的内容......

我试图访问一个站点以查看是否有特定内容可用。我发现它一直从我请求的站点重定向到该站点的本地版本。我注意到一些负责重定向的 cookie。如果其他人遇到同样的问题,则可能存在 cookie 或其他请求标头,您可以使用它们来防止重定向远离您的预期目标。

就我而言,我所要做的就是这样:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
//whatever other headers you need...
request.Headers.Add(HttpRequestHeader.Cookie, "ipRedirectOverride=true");

请注意,这只是一个示例,您的 cookie 名称/值可能不同

于 2020-05-13T17:46:25.943 回答