Могу ли я изменить заголовки HTTP-запроса, отправленного браузером?



Я смотрю в спокойный дизайн и хотел бы использовать методы HTTP (POST,GET, ...) и HTTP заголовки как можно больше. Я уже выяснил, что HTTP методы PUT и DELETE не поддерживаются в браузере.



теперь я ищу, чтобы получить различные представления одного и того же ресурса и хотел бы сделать это путем изменения Accept заголовок запроса. В зависимости от этого Accept заголовок, сервер может служить другой вид на то же самое ресурс.



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



The <a..> тега атрибут type, который может иметь тип mime, выглядел как хороший кандидат, но заголовок по-прежнему был браузером по умолчанию (в Firefox его можно изменить в about:config С network.http.accept.default ключ).

1703   5  

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, именно это.

вместо этого, более спокойный подход будет использование отдельного места для кодирования предпочтительного представления С помощью Accept HTTP заголовок, который используется для согласование контента, где клиент сообщает серверу, какие типы контента он может обрабатывать / обрабатывать, и сервер пытается выполнить запрос клиента. Этот подход является частью стандарт 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 (на самом деле, любые заголовки запросов) для запросов. Он прекрасно работает.

https://addons.mozilla.org/en-US/firefox/addon/967/

используйте 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

    Ничего не найдено.