javascript - ASP.NET/IIS 将 302 响应重写为 200
问题描述
我想用来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
在两个浏览器中按预期运行?
编辑:
为了清楚起见,事件的顺序如下:
- 单击页面上的一个按钮,该按钮将一个 POST
form
到服务器 - 服务器端代码运行,其中包括对
Response.Redirect
. - 作为对 POST 的响应,浏览器收到一个 200 包含
{script:"window.location=\"http://www.example.org/?key1=value1&key2=value2\";"}
- 浏览器对 URL 进行 GET - 在 IE 的情况下是响应中显示的那个,或者在 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 - 使用 Web 服务并使用 Node.js 将 CLOB 插入 Oracle 数据库表
- python-3.x - Gekko:使用 if3 函数后代码性能下降
- wildfly - Oracle DB 连接:失败描述:“WFLYJCA0041:无法为驱动程序加载模块 [com.oracle]
- c++ - 如何使用 CMake 3.15 查找和链接 CUDA 库?
- azure-devops - Azure Pipelines 中的 Helm Chart 升级
- ibm-doors - 如何使用 AttrBaseType 获取枚举属性
- ruby - 如何在实例化的类中修改 OpenStruct
- php - 检索没有参数名称的参数
- python - 使用 Python 的魔方
- reactjs - 当我尝试运行我的反应应用程序时,我没有得到任何 undef