ASP.NET/IIS переписывает 302 ответа как 200 - PullRequest
0 голосов
/ 28 января 2019

Я хочу использовать Response.Redirect для перенаправления на новый URL-адрес, содержащий значения строки запроса, например:

Response.Redirect("http://www.example.org/?key1=value1&key2=value2");

Это возвращает браузеру следующий ответ, в результате чего он запрашивает новую страницу:

{script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}

К сожалению, IE11 и Google Chrome обрабатывают это по-разному.IE11 ведет себя так, как и следовало ожидать, однако Chrome HTML-кодирует этот ответ, заставляя браузер перенаправить на http://www.example.org/?key1=value1&key2=value2, что явно не то, что я хочу.Как я могу использовать Response.Redirect, чтобы вести себя как ожидалось в обоих браузерах?

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

Для ясности последовательность событий выглядит следующим образом:

  1. Нажмитекнопка на странице, которая отправляет form на сервер
  2. запускается код на стороне сервера, который включает в себя вызов Response.Redirect.
  3. В ответ на запрос POSTбраузер получает 200, содержащий {script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}
  4. Браузер выполняет GET для URL-адреса - либо для того, который показан в ответе в случае IE, либо для HTML-кодированной версии в случае Chrome.

Edit2:

Я обновил свой код, чтобы явно выполнить перенаправление 302 вместо использования Response.Redirect, однако он все еще ведет себя так же!302 заменяется перенаправлением JS где-нибудь вдоль линии!Кто-нибудь знает какие-либо настройки (в коде или в IIS), которые могут вызвать такое поведение?Мой новый код перенаправления:

private void ExplicitRedirect(string url)
{
    Response.StatusCode = 302;
    Response.RedirectLocation = url;
    Response.End();
}

1 Ответ

0 голосов
/ 29 января 2019

В этом проекте используется Ext.Net, который, по-видимому, изменяет поведение Response.Redirect.При использовании собственного метода Redirect в Ext.Net по-прежнему используется JS вместо 302, но по какой-то причине этот метод работает, как и ожидалось.

...