Как сохранить данные Request.Form - PullRequest
1 голос
/ 19 сентября 2011

Это касается правильной пересылки переменных POST в ASP.Net

.

Чтобы заставить все соединения использовать протокол https, а не http, я вставил следующий код в Global.asax

If Not Request.IsSecureConnection Then
            Response.Redirect("https://" & Request.ServerVariables("HTTP_HOST") + Request.RawUrl)
End If

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

Например: веб-страница http://abc.com/page1.aspx (эта страница принимает только данные формы POST). теперь с принудительным перенаправлением приложения на https, страница правильно перенаправляется на https://abc.com/page1.aspx,, однако все данные формы теряются в процессе.

Есть ли способ сохранить и переслать данные Request.Form ??

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

Это почти то, для чего нужен код состояния HTTP 307. Возможно, вы захотите перенаправить их со статусом HTTP 307 вместо 302.

HTTP 307 означает перенаправление и повторную отправку POST-данных:

В этом случае запрос должен повторяться с другим URI, но в будущих запросах все еще может использоваться исходный URI. [2] В отличие от 303, метод запроса не должен изменяться при повторном выдаче исходного запроса. Например, запрос POST должен повторяться с использованием другого запроса POST Ссылка

В ASP.NET нет супер простого способа сделать это, но это не сложно. Например:

Response.StatusCode = 307;
Response.Status = "307 Temporary Redirect";
Response.AddHeader("Location","http://www.new-url.com");

В качестве альтернативы вы также можете использовать Server.Transfer(string). Фил Хаак дает объяснение этому здесь . Это может быть проще для вас.

0 голосов
/ 10 марта 2012
Sub Session_OnStart
    If UCase(Request.ServerVariables("HTTPS")) = "OFF" Then
        sRedirect = "https://" & Request.ServerVariables("SERVER_NAME") &  Request.ServerVariables("PATH_INFO") & "?" & Request.Querystring
        Response.Redirect sRedirect
    End if
END Sub

Добавьте вышеперечисленное в ваш global.asa или global.asax.

...