2009-02-24 2 views
39

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

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

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

+2

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

ответ

40

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

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

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

12

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

+1

+1. Даже при использовании XMLHttpRequest настройки заголовков не являются полностью надежными. Перейдите к параметрам. – bobince

+1

Если вы используете SSL, а информация, которую вы отправляете, чувствительна, вы не должны помещать ее в строку запроса, потому что она не будет зашифрована. Только тело сообщения HTTP зашифровано, тем более безопасно в заголовке –

+5

@JamesReategui Это неверно: URL-адрес зашифрован в пути. Потенциальной проблемой безопасности будет сохранение секретных URL-адресов в конечных точках (в журналах или закладках или истории), но не в пути. –

12

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

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

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

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

0

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

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