iPad 上的 Safari - HTTP 状态代码 204 的不正确处理

问题描述 投票:0回答:1

我们在引导程序模式中呈现带有 runat="server" 标签的 ASP.Net Web 表单。我们使用内置的引导程序功能来使用 jQuery 加载函数执行获取请求,然后将响应插入到引导程序模式标记中。

asp.net web 表单在回发时返回 HTTP 状态代码 204(无内容),这意味着我们可以提交表单,ASP.Net 服务器端单击事件会适当触发,浏览器不会尝试呈现响应。然后我们用一些 javascript 关闭引导模式。

这在 IE10、Firefox、Chrome 和 Safari 的 Windows 上运行良好。在 iPad 上,但在 Safari 中,通过将原始页面标记呈现为文本来响应 204 状态代码。我也尝试过 302 Not Modified,它也没有解决问题(并且在语义上并不正确)。

我搜索了类似的问题,只找到了对 2008 年旧 webkit 错误的引用,其中代码被描述为在收到 204 时呈现空白页面。

变通

我还尝试将 Response 对象的 SuppressContent 属性设置为 true:

if (!Page.IsPostBack)
{
    // Do page rendering stuff
}
else
{
    Response.StatusCode = (int)HttpStatusCode.NoContent;
    Response.SuppressContent = true;
}

这确实有帮助,因为 Safari 不再将原始页面标记呈现为文本,引导模式通过 javascript 调用关闭,但 safari 显示在地址栏中以模式加载的页面的 URL,并且表现得像它正在加载一个页,但从来没有。用户可以使用该应用程序并请求其他页面没有问题,因此我们可以认为这是一种变通方法。但是,我想找一些更干净的东西。

有什么想法或建议吗?

注意:我们正在重构遗留网络应用程序的用户界面,无法完全改变页面运行的方式。

asp.net ipad twitter-bootstrap safari http-status-codes
1个回答
0
投票

代码 302 - “找到”。尝试 304 - “未修改”。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages

© www.soinside.com 2019 - 2024. All rights reserved.