WebRequest C#403错误

时间:2009-10-22 22:15:20

标签: c# google-chrome httpwebrequest http-status-code-403

好的,这就是我正在做的事情。 我正在向服务器发出请求以下拉文件。 我通过向网站提供WebRequest来获得响应,就像通常那样,虽然我收到403错误,说我没有权限。

问题是当我将网址插入谷歌浏览器时,我被重定向,我请求的文件出现故障。我在其他浏览器上尝试过这个URL并收到403错误。

Google Chrome正在做什么让它绕过403错误?我尝试过使用Google Chrome用户代理,但这对我没有帮助。

帮助

3 个答案:

答案 0 :(得分:1)

网络服务器可能会识别Chrome用户代理并允许文件由其下载,但不能由其他用户代理下载。设置您的WebRequest以使用与Google Chrome相同的用户代理字符串和设置 - 默认情况下,它可能使用IE设置。

编辑:这是instruction from MSDN about how to set the WebRequest user agent string。 要查找任何浏览器的用户代理,请在其地址栏中输入:

javascript:prompt('my user agent string is', navigator.userAgent);

答案 1 :(得分:1)

403 status code表示您尝试访问的资源是禁止的。如同,请不要问,因为你没有得到它。这与401代码的不同之处在于,在服务器确认资源的交付之前,会提出授权质询。

虽然这可能是程序化配置,但这也可以通过Web服务器配置的资源访问限制来解释。

您是否可以验证Google Chrome中下载的资源是否是您尝试访问的预期资源?

答案 2 :(得分:1)

感谢您的帮助。你的答案都没有直接帮助我,但感谢您的努力。

我的程序试图从服务器上取出一个文件。我已经想出如何解决身份验证问题并在使用Chrome时在服务器上查找文件。事实证明,他们的Web服务使用用户会话更加先进。

基本上我没有访问webservice命令,所以我所能做的就是使用基本的http url来获得预定义的响应。我用来获取服务器文件的文件URL不是唯一的,它是动态的,具体取决于webbrowser / session。我正在使用HTTPRequest对象来获取HTML文件,以便我可以解析它。使用html文件我解析它以找出文件的动态ID(我认为它是唯一的)。然后我将它附加到URL的末尾。在Chrome中,我会被重定向并显示下载提示。问题是当我想下拉文件时我需要webbrowser对象。知道了这一点,我使用webbrowser对象来获取文件ID,然后使用相同的webbrowser对象(技术上与Web服务器相同的会话)来下拉文件。

这很复杂。基本上我的程序是一个小hack,提供服务器尝试阻止的功能。

希望在未来的任何项目中帮助你们。