Отправка информации с HTTP-перенаправлением, которое браузер должен отправить в перенаправленное местоположение? - PullRequest
8 голосов
/ 07 июня 2009

Возможно ли это ... например, представьте, что я отвечаю на запрос с 302 (или 303), и я сообщаю браузеру, чтобы сделать запрос в определенное место .. есть ли заголовок, который я могу отправить с HTTP 302, чтобы последующий запрос от браузера включал этот заголовок?

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

'Контент перемещен, иди сюда .. о, и ты захочешь взять его с собой, чтобы указать место перенаправления'

Полагаю, большого жира нет!

Заранее спасибо.


Редактировать

Причина этого заключается в шаблонах PRG, где у вас есть URL-адрес GET и URL-адрес POST, учитывая, что вы публикуете данные, а это неприемлемо, сервер перенаправляет вас на GET и выполняет некоторую «магию» чтобы «отправить данные» в этот GET, чаще всего используется состояние сеанса для хранения переменной.

Однако это может разбить в сценариях, где происходят многие из этих запросов PRG, при условии, что это не распространенный сценарий, и обычно никто не должен беспокоиться об этом ... но если вы это сделаете - вам понадобится способ идентифицировать запросы, это можно сделать с помощью параметров строки запроса, отправленных в 302, так что конкретная запись может быть переведена в состояние сеанса в соответствии с этим запросом.

Вопрос касался попытки удалить «ключ запроса» из URL-адреса и сделать его более неявным… куки «кажутся» работающими, но они только уменьшают окно для взлома.

Было бы здорово сказать, что когда вы перейдете к указанному «местоположению», отправьте эти параметры.


Редактировать

Просто чтобы заметить, я не пытаюсь заставить браузер посылать произвольные заголовки в местоположение, но если есть ЛЮБЫЕ заголовки, предназначенные для подсказки контекста запроса (как могли бы параметры строки запроса).

Ответы [ 2 ]

10 голосов
/ 07 июня 2009

Сам ответ перенаправления не содержит никаких данных. Вы можете перенаправить, используя URL с параметрами запроса, но новое «местоположение» должно знать, как использовать эти параметры.

0 голосов
/ 07 июня 2009

Нет, это невозможно. Вы не можете заставить клиента к чему-либо. Вы можете просто сказать «это не то место, но попробуйте это место». Но не гарантируется, что клиент отправит тот же запрос или другой запрос в это новое местоположение. И указание клиенту добавить определенное поле заголовка в этом последующем запросе к новому местоположению также невозможно.

...