Могу ли я изменить заголовки HTTP-запроса, отправленного браузером?
Я смотрю в спокойный дизайн и хотел бы использовать методы HTTP (POST,GET, ...) и HTTP заголовки как можно больше. Я уже выяснил, что HTTP методы PUT и DELETE не поддерживаются в браузере.
теперь я ищу, чтобы получить различные представления одного и того же ресурса и хотел бы сделать это путем изменения Accept заголовок запроса. В зависимости от этого Accept заголовок, сервер может служить другой вид на то же самое ресурс.
проблема в том, что я не нашел способ сказать моему браузеру, чтобы изменить этот заголовок.
The <a..> тега атрибут type, который может иметь тип mime, выглядел как хороший кандидат, но заголовок по-прежнему был браузером по умолчанию (в Firefox его можно изменить в about:config С network.http.accept.default ключ).
5 ответов:
Я не думаю, что это возможно сделать так, как вы пытаетесь это сделать.
указание принятого формата данных обычно делается путем добавления расширения к имени ресурса. Так что, если у вас есть ресурс, как
/resources/resourceи
GET /resources/resourceвозвращает его HTML-представление, чтобы указать, что вы хотите его XML-представление вместо этого, вы можете использовать следующий шаблон:/resources/resource.xmlвы должны сделать принятую магию определения типа контента на значит, на стороне сервера.
или использовать Javascript, как предлагает Джеймс.
Я бы частично не согласился с предложением Милана о включении запрошенного представления в URI.
если это вообще возможно, Урис должен только используется для адресации ресурсов и не для туннелирования HTTP методов / команд. В конце концов, конкретные бизнес-действия (редактирование, блокировка и т. д.) может быть встроен в URI, если create (POST) или update (PUT) в одиночку не служат цели:
POST http://shonzilla.com/orders/08/165;editв случае запроса конкретного представление в URI вам нужно будет нарушить ваш дизайн URI, в конечном итоге сделав его более уродливым, смешивая две разные концепции REST в одном и том же месте (т. е. URI) и затрудняя общую обработку запросов на стороне сервера. То, что предлагает Милан, и многие делают то же самое, в том числе. Flickr, именно это.
вместо этого, более спокойный подход будет использование отдельного места для кодирования предпочтительного представления С помощью
AcceptHTTP заголовок, который используется для согласование контента, где клиент сообщает серверу, какие типы контента он может обрабатывать / обрабатывать, и сервер пытается выполнить запрос клиента. Этот подход является частью стандарт HTTP 1.1, программное обеспечение совместимо и поддерживается веб-браузерами, а также.сравните это:
GET /orders/08/165.xml HTTP/1.1 or GET /orders/08/165&format=xml HTTP/1.1для этого:
GET /orders/08/165 HTTP/1.1 Accept: application/xmlиз веб-браузера вы можете заказать любой тип контента с помощью
setRequestHeaderметод
Я искал, чтобы сделать точно то же самое (RESTful web service), и я наткнулся на этот Firefox аддон, который позволяет изменять заголовки accept (на самом деле, любые заголовки запросов) для запросов. Он прекрасно работает.
используйте javascript!
xmlhttp=new XMLHttpRequest(); xmlhttp.open('PUT',http://www.mydomain.org/documents/standards/browsers/supportlist) xmlhttp.send("page content goes here");
ModHeader расширение для Google Chrome, также является хорошим вариантом. Вы можете просто установить заголовки, которые вы хотите, и просто введите URL-адрес в браузере, он автоматически возьмет заголовки из расширения, когда вы нажмете url-адрес. Единственное, он будет отправлять заголовки для каждого URL-адреса, который вы нажмете, поэтому вам нужно отключить или удалить его после использования.
Comments