Добавление пользовательских заголовков HTTP с использованием JavaScript - PullRequest
40 голосов
/ 24 февраля 2009

На странице HTML, нажимая на ссылку тегов Image ("img") или привязки ("a"), я хотел бы добавить пользовательские заголовки для запроса GET. Эти ссылки обычно предназначены для загрузки динамического контента. Эти заголовки могут быть заголовками SAML или заголовками конкретных приложений.

Можно ли добавить эти пользовательские заголовки через JavaScript? Или, если я добавлю их через XMLHttpRequest, как мне добиться функциональности загрузки?

Это требование только для IE6 или 7.

Ответы [ 4 ]

40 голосов
/ 24 февраля 2009

Если вы используете XHR , тогда setRequestHeader должно работать, например,

xhr.setRequestHeader('custom-header', 'value');

P.S. Вы должны использовать Hijax , чтобы изменить поведение ваших якорей так, чтобы оно работало, если по какой-то причине AJAX не работает для ваших клиентов (как, например, скрипт в другом месте на странице).

12 голосов
/ 24 февраля 2009

Единственный способ добавить заголовки к запросу из браузера - это использовать метод XmlHttpRequest setRequestHeader.

Использование этого с запросом «GET» приведет к загрузке ресурса. Хитрость заключается в том, чтобы получить доступ к ресурсу по назначению. Якобы вы должны иметь возможность разрешить кэширование ответа GET в течение короткого периода времени, поэтому при переходе на новый URL или создании тега IMG с URL-адресом src следует использовать кэшированный ответ из предыдущего «GET». Тем не менее, это вполне может дать сбой, особенно в IE, который может быть чем-то вроде закона для самого кэша.

В конечном итоге я согласен с Мерардом, использование строки запроса - самый простой и надежный метод.

Другая причудливая альтернатива - использование XHR для запроса URL-адреса, который указывает на ваше намерение получить доступ к ресурсу. Он может ответить сессионным cookie, который будет передан последующим запросом изображения или ссылки.

12 голосов
/ 24 февраля 2009

Я думаю, что самый простой способ сделать это - использовать строку запроса вместо заголовков HTTP.

0 голосов
/ 09 марта 2015

Как уже было сказано, самый простой способ - использовать строку запроса.

Но если вы не можете по соображениям безопасности, вам следует рассмотреть возможность использования файлов cookie.

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