Я должен перенаправить пользователя на внешний сайт хотя запрос POST.
Единственная опция, которую я выяснил, состоит в том, чтобы сделать это, отправляют форму через JavaScript.
Какие-либо идеи?
Не совсем понятно, что вы имеете в виду, поэтому рассмотрим несколько сценариев:
Пользователь должен отправить форму POST на сервер, отличный от вашего.
Легко, просто укажите цель как действие формы:
Пользователь должен быть перенаправлен после успешной отправки POST
Легко, принимайте и обрабатывайте данные POST как обычно, затем ответьте заголовком перенаправления 302
или 303
.
Пользователь должен отправить данные POST на ваш сервер, и после проверки вы хотите отправить эти данные на другой сервер.
Немного сложно, но есть три варианта:
307
, что означает, что пользователь должен попытаться выполнить тот же запрос по другому адресу. Теоретически это означает, что браузер должен отправлять одни и те же данные на другой сервер. Я не совсем уверен, насколько хорошо это поддерживается, но любой браузер, понимающий HTTP1.1, должен это сделать. AFAIA это не так часто используется на практике. См. Здесь список всех вариантов перенаправления HTTP: http://en.wikipedia.org/wiki/Http_status_codes#3xx_Redirection
Javascript - единственный способ (сделать это автоматически). Вы просто не можете перенаправить запрос POST
стандартными методами http
. Вы уверены, что GET
здесь не подходит?
Просто установите URL действия HTML-формы на конкретный внешний сайт.
Вот SSCCE, просто скопируйте, вставьте и запустите его:
<!doctype html>
<html lang="en">
<head>
<title>SO question 2604530</title>
</head>
<body>
<form action="http://stackoverflow.com/questions/2604530/answer/submit" method="post">
<textarea name="post-text"></textarea>
<input type="submit" value="Post Your Answer">
</form>
</body>
</html>
Вы увидите, что Stackoverflow имеет хорошую CSRF-защиту ;)
Использование формы, вероятно, является вашим единственным вариантом в качестве ссылок, перенаправления HTTP и
только заставит браузер загрузить другой URL-адрес с помощью метода GET .
Вам не обязательно использовать JavaScript для отправки формы. Если некоторое взаимодействие пользователя приемлемо, вы можете использовать форму с некоторыми
полями и позволить пользователю нажать кнопку отправки.
Вы также можете убедиться, что страница, на которую вы перенаправляетесь, еще не принимает параметры GET. Некоторые сценарии без разбора принимают как GET, так и POST.