Вопрос

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

Проблема в том, что когда я подключаю URL-адрес к Google Chrome, я перенаправляюсь, и файл, который я запросил, выводится.Я пробовал использовать URL-адрес в других браузерах и получаю ошибку 403.

Что делает Google Chrome, что позволяет ему обойти ошибку 403?Я пробовал использовать пользовательский агент Google Chrome, но это мне не помогло.

Справка

Это было полезно?

Решение 3

Спасибо за помощь. Ни один из ваших ответов не помог мне напрямую, но спасибо за попытку.

Моя программа пыталась извлечь файл с сервера. Я выяснил, как обойти проблемы аутентификации и найти файл на сервере при использовании Chrome. Оказывается, что их веб-сервис более продвинут с использованием пользовательских сессий.

По сути, у меня не было доступа к командам веб-сервиса, поэтому все, что я мог сделать, - это использовать базовые http-URL для получения предопределенного ответа. URL-адрес файла, который я использовал для получения файла сервера, не был уникальным, он был динамическим в зависимости от веб-браузера / сеанса. Я использовал объект HTTPRequest, чтобы получить HTML-файл, чтобы я мог его проанализировать. С помощью html-файла я проанализировал его, чтобы узнать динамический идентификатор файла (я думал, что он уникален). Затем я прикрепил бы это к концу URL. В Chrome я был бы перенаправлен и представлен с подсказкой загрузки. Проблема была в том, что мне нужен был объект webbrowser, когда я хотел вытащить файл. Зная это, я использовал объект webbrowser, чтобы получить идентификатор файла, затем использовал тот же объект webbrowser (технически те же сеансы в соответствии с веб-сервером), чтобы вытащить файл.

Это довольно сложно. По сути, моя программа - это небольшой хак, который предоставляет функциональность, которую сервер пытается блокировать.

Надеюсь, это помогло вам, ребята, в любом из ваших будущих проектов.

Другие советы

Возможно, веб-сервер распознает пользовательский агент Chrome и позволяет ему загружать файл, но не другим пользовательским агентам. Настройте ваш WebRequest для использования тех же строк и настроек агента пользователя, что и в Google Chrome - по умолчанию он может использовать настройки IE.

Изменить: вот инструкция от MSDN о том, как установить строку пользовательского агента WebRequest . Чтобы узнать пользовательский агент любого браузера, введите его в адресную строку:

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

Тот Самый код состояния 403 указывает, что ресурс, к которому вы пытаетесь получить доступ, Запрещен.Например, не спрашивай, потому что ты этого не получишь.Это отличается от кода 401 тем, что запрос на авторизацию предоставляется до того, как сервер подтвердит доставку ресурса.

Хотя это может быть программная конфигурация, это также может быть объяснено ограничениями доступа к ресурсу, настроенными через веб-сервер.

Можете ли вы подтвердить, что загруженный ресурс в Google Chrome является ожидаемым ресурсом, к которому вы пытаетесь подключиться?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top