asp.net iPad上的Safari-HTTP状态代码204的错误处理

zaq34kh6  于 2023-04-13  发布在  .NET
关注(0)|答案(1)|浏览(177)

我们在bootstrap模式中呈现一个带有runat=“server”标记的ASP.NET Web表单。我们使用内置的bootstrap功能来使用jQuery加载函数执行get请求,然后将响应插入bootstrap模式标记。
asp.netweb表单在回发时返回HTTP状态代码204(无内容),这意味着我们可以提交表单,ASP.Net服务器端单击事件适当地触发,浏览器不尝试呈现响应。然后我们使用一些javascript关闭引导模式。
这在IE10、Firefox、Chrome和Safari的Windows上运行得很好。然而在iPad上,Safari通过将原始页面标记呈现为文本来响应204状态代码。我也尝试过302 Not Modified,它也没有解决这个问题(并且在语义上也不正确)。
我搜索过类似的问题,只找到了一个2008年的旧webkit bug的参考,其中代码被描述为在收到204时呈现空白页面。

变通办法

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

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

这确实有助于Safari不再将原始页面标记呈现为文本,引导模式通过javascript调用关闭,但safari在地址栏中显示在模式中加载的页面的URL,并且表现得像加载页面一样,但从来没有这样做过。用户可以使用应用程序并请求其他页面没有问题,所以我们可以认为这是一种解决方案。然而,我想找个干净点的。
有什么想法或建议吗?

注意:我们正在重构旧版Web应用的UI,无法完全改变页面的操作方式。

ffscu2ro

ffscu2ro1#

代码302 -“找到”.尝试304 -“未修改”.
https://developer.mozilla.org/en-US/docs/Web/HTTP/Status#redirection_messages

相关问题