Почему мой PDF имеет заголовки ['content-type'] как 'text / html; кодировка = UTF-8' ? - PullRequest
0 голосов
/ 22 марта 2019

При загрузке pdf-файла с его URL я наблюдаю headers['content-type'] как 'text/html; charset=utf-8', когда мне нужно 'application / pdf'.Почему это происходит, даже когда я устанавливаю тип содержимого заголовков?

Пример кода:

import requests
from requests.auth import HTTPBasicAuth
from pprint import pprint

file = 'url.pdf'
username = 'myusername'
password = 'mypassword'
headers = {'content-type': 'application/pdf', 'User-Agent': 'myUser-Agent'}
pdf_fname = 'new.pdf'

resp = requests.get(
    file, headers=headers, 
    auth=HTTPBasicAuth(username, password),
    proxies=proxyDict
)

with open(pdf_fname,'wb') as f:
    f.write(resp.content)

pprint(resp.headers['content-type'])

1 Ответ

1 голос
/ 22 марта 2019

GET запросы не имеют содержимого, поэтому нет необходимости в заголовке Content-Type.Установка заголовка там бессмысленна.HTTP-серверы обычно игнорируют заголовок при получении любых запросов GET.

Наблюдаемый заголовок устанавливается HTTP-сервером, с которым вы связались, и если данные, которые вы получаете с сервера, представляют собой файл PDF, то ответс неправильным заголовком Content-Type, то это полностью на сервере, а не в вашем коде или requests.Просто игнорируйте заголовок или свяжитесь с администраторами сайта, с которым вы связываетесь, чтобы попросить их исправить ошибку.

Однако, если сервер фактически отправляет вам HTML, вы можете захотеть сохранить этот HTML где-нибудь иоткройте его в браузере, чтобы увидеть, что сервер пытается вам сказать.Это может быть конкретное сообщение об ошибке или страница входа.Мы не можем сказать вам, так ли это на самом деле, мы просто не знаем, как этот конкретный веб-сайт предназначен для работы.

Также см. другой ответМой , который охватывает устранение неполадок requests HTTP-запросы, которые отличаются от того, как веб-браузер обрабатывается для тех же URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...