好的,这就是我要做的。我正在向服务器发出请求,要求下载一个文件。我这样做是通过向网站创建一个WebRequest来获得响应,就像你通常会做的那样,尽管我得到了一个403错误,说我没有权限。
问题是,当我将URL插入Google Chrome时,我会被重定向,然后我请求的文件就会掉下来。我在其他浏览器上尝试了这个URL,得到了403错误。
Google Chrome做了什么让它绕过403错误?我试过使用Google Chrome用户代理,但这对我没有帮助。
帮助
发布于 2009-10-30 10:07:33
谢谢你的帮助。你的答案对我都没有直接帮助,但谢谢你的尝试。
我的程序试图从服务器上拉出一个文件。我已经知道了如何在使用Chrome时绕过身份验证问题并在服务器上找到文件。事实证明,他们的web服务使用用户会话更高级。
基本上,我无法访问webservice命令,所以我所能做的就是使用基本的http urls来获取预定义的响应。我用来获取服务器文件的文件url不是唯一的,它是动态的,取决于get浏览器/会话。我使用HTTPRequest对象获取超文本标记语言文件,以便对其进行解析。使用html文件,我解析它以找出文件的动态ID (我认为它是唯一的)。然后我会将其附加到URL的末尾。在Chrome中,我会被重定向并出现下载提示。问题是,当我想要下载文件时,我需要webbrowser对象。知道了这一点,我使用webbrowser对象来获取文件ID,然后使用相同的webbrowser对象(从技术上讲,根据get服务器相同的会话)来下载该文件。
这是相当复杂的。基本上,我的程序是一个小黑客,它提供的功能,服务器是尝试块。
希望这对你们将来的任何项目都有帮助。
发布于 2009-10-23 06:59:07
web服务器可能会识别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);
发布于 2009-10-23 07:29:23
403 status code指示您尝试访问的资源是禁止的。也就是说,不要问,因为你得不到它。这与401代码的不同之处在于,在服务器确认资源的交付之前会提出授权质询。
虽然这可以是编程配置,但这也可以通过对通过web服务器配置的资源的访问限制来解释。
你能验证在Google Chrome中下载的资源就是你想要访问的资源吗?
https://stackoverflow.com/questions/1610295
复制相似问题