首页 > 解决方案 > 在 python 获取请求时收到 500 内部服务器错误,相同的 url 在浏览器中有效

问题描述

我正在尝试使用基于从 API 获得的 url 的 python 请求打开和下载 pdf。这适用于许多文件,但对于存储在一个特定站点的文件,我会收到 500 Internal Server 错误响应。在响应中有一个简单的 html,只有文本:未验证。

当我在 Chrome 中粘贴相同的 url 时,我得到了 pdf。但是我可以在控制台中看到“503 - 无法加载资源”错误,因为它无法加载某些图标。这能以某种方式相关吗?

当我在没有标题的 Postman 中运行它时,该 url 也有效。

我似乎遇到了与此问题中描述的相同的问题: python requests http response 500 (site can bereached in browser) 但是将 User-Agent 添加到请求标头的修复没有帮助。是否需要一些其他标头数据,有没有办法检查我的 Chrome 浏览器发送的请求?

更新:我记录了 Chrome 发送的请求并将标头复制到我的 python 请求中。还是同样的错误。我试过我们没有相同的cookie。

这是我的代码:

import requests
headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
               'Accept-Encoding': 'gzip, deflate, br',
               'Accept-Language': 'nb,en-GB;q=0.9,en-US;q=0.8,en;q=0.7',
               'Connection': 'keep-alive',
               'Cookie': 'JSESSIONID=a95b392a6d468e2188e73d2c296b; NSC_FS-NL-CET-XFC-IUUQ-8081=ffffffff3d9c37c545525d5f4f58455e445a4a4229a1; JSESSIONID=7b1dd39854eee82b2db41225150e',
               'Host': url.split('/')[2],
               'Upgrade-Insecure-Requests': '1',
               'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36'}
response = requests.get(url, headers=headers, verify=True)

我使用 Python 3.6.3

标签: httpspython-requestspython-3.6http-status-code-500

解决方案


我发现只有在通过请求运行 GET 时才会出现错误。所以我改为使用:urllib.request.urlopen(url)

在此处了解有关此方法的更多信息:在 Python 3 中从 Web 下载文件


推荐阅读