javascript - ASP.NET/IIS 将 302 响应重写为 200

标签 javascript asp.net .net-4.0 ext.net

我想使用 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. 单击页面上的按钮,将表单 POST 到服务器
  2. 服务器端代码运行,其中包括对 Response.Redirect 的调用。
  3. 为了响应 POST,浏览器会收到包含 {script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}< 的 200/
  4. 浏览器对 URL 进行 GET 操作 - 如果是 IE,则为响应中显示的 URL;如果是 Chrome,则为 HTML 编码的版本。

编辑2:

我已经更新了我的代码以显式执行 302 重定向,而不是使用 Response.Redirect 但它的行为方式仍然相同! 302 被 JS 重定向所取代!有谁知道任何地方(代码或 IIS 中)的任何设置可能会导致此行为?我的新重定向代码是:

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

最佳答案

该项目使用 Ext.Net,它显然改变了 Response.Redirect 的行为。使用 Ext.Net 自己的 Redirect 方法仍然使用 JS 而不是 302,但由于某种原因,该方法按预期工作。

关于javascript - ASP.NET/IIS 将 302 响应重写为 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54406068/

相关文章:

javascript - 如何屏蔽文本输入中输入的字符而不导致模型验证失败?

通过AJAX的ASP.net MVC AntiForgeryToken

javascript - 避免在 VueJS 2 中直接修改 prop

c# - 动态创建带有c#代码的javascript数组

asp.net - 如何在 ASP .NET Core 2.0 Web API 中验证自定义 token (不是 JWT)?

c# - MSBuild 处理循环依赖

c# - 使用 Lazy<T> 对性能有害吗?

c# - 使用 quartz.net xml 作业定义文件中的参数配置作业

javascript - 使用 hasOwnProperty 的此对象扩展程序中存在错误,我不确定该错误是什么或此扩展程序在哪里

javascript - 如何合并 JSON 对象数组中的数组?