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

时间:2013-05-23 17:16:27

标签: asp.net ipad twitter-bootstrap safari http-status-codes

我们在bootstrap模式中使用runat =“server”标记呈现ASP.Net Web表单。我们使用内置的bootstrap功能来使用jQuery加载函数执行get请求,然后将响应插入bootstrap模式标记。

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

这在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,其行为类似于加载页面但从未这样做。用户可以使用该应用程序并请求其他页面没有问题,因此我们可以认为这是一个解决方法。但是,我想找一些更清洁的东西。

有任何想法或建议吗?

注意:我们正在重构旧版网络应用的用户界面,无法完全改变网页的运作方式。

0 个答案:

没有答案