403 Запрещено при попытке отобразить изображение с URL - Kivy

Я пытаюсь отобразить изображение в приложении kivy, но загрузчик изображений возвращает ошибку 403, запрещенную.

Я заметил, что мне нужно отправить заголовок User-Agent, чтобы обойти эту ошибку, но я не смог найти способ передать заголовки загрузчику изображений.

Есть ли способ решить эту проблему?

кв файл

AsyncImage:
    source: 'url_to_image'
    keep_ratio: True

ошибка:

[ERROR  ] [Loader      ] Failed to load image <url_to_image>
urllib.error.HTTPError: HTTP Error 403: Forbidden

person Łukasz Olender    schedule 19.09.2016    source источник


Ответы (1)


В настоящее время вы не можете изменить User-Agent при использовании AsyncImage. Ответственный код находится здесь:

fd = urllib_request.urlopen(filename)

Как видите, нет хорошего способа передать туда другой UserAgent.

Вместо этого обработайте загрузку файла самостоятельно.

Я думаю, вы также можете попытаться передать объект urllib.request.Request с модифицированным методом split, чтобы переменная filename на самом деле содержала не строку, а Request, но все еще выдерживала проверки StringPropertyAsyncImage). Но это, вероятно, было бы очень нестабильным и не «правильным» решением.

person syntonym    schedule 21.09.2016
comment
Спасибо за Ваш ответ! Я знаю, что это очень плохая идея, но я изменил файл kivy, добавил заголовки в запрос, и теперь все работает. - person Łukasz Olender; 22.09.2016