【问题标题】:Having an issue with the default response Content-Type默认响应 Content-Type 有问题
【发布时间】:2011-05-24 19:06:53
【问题描述】:

我有一个具有以下 Doctype 的网站:

<!DOCTYPE HTML>
<html>...</htm>

我发现了一个导致某些移动浏览器崩溃的问题(黑莓和旧版机器人)。例如,在 Android 上,当发出请求时,它会发送此标头:

Accept: application/xml,appliation/xhtml+xml,text/html ...

问题是我的网站不符合 XHTML,但 IIS 决定,既然请求页面的浏览器更喜欢 xhtml,那么它应该提供它而不是 text/html

我尝试通过将&lt;META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=UTF-8"&gt; 添加到页面来覆盖它,但它不起作用。

我试图找出告诉 iis 停止为所有对http://mydomain.com/mobile 的请求提供 xhtml 的最简单方法。我正在考虑通过覆盖 HttpModule 中的 Response.Content-Type 来做到这一点。

这里有什么我遗漏的吗?修复它的最佳方法是什么?

【问题讨论】:

    标签: c# asp.net iis-7 content-type httpmodule


    【解决方案1】:

    IIS 没有您提到的功能(覆盖 .NET 输出的内容类型),因为这取决于应用程序。手机“崩溃”时会发生什么情况,您能否提供 HTTP 调试跟踪?

    要测试 ContentType 是否真的是问题所在,请将其添加到您的一个页面的 Page_Load 事件中,然后在受影响的移动设备上查看该页面。

    Response.ContentType = "text/html";
    

    移动浏览器与桌面版本不同,它们解析 JavaScript,以不同方式处理 DOM 元素。例如,Mobile Safari 有一个不完整的 Date.parse() 方法,这会导致 JS 在该页面上中断。

    尝试在调试模式下运行移动浏览器(如果可能),看看实际错误是什么。因为我看不出 IIS 会如何随意更改内容类型,尤其是 XHTML 类型,这意味着底层 HTML 必须是完美

    【讨论】:

      【解决方案2】:

      尝试将您的 DOCTYPE 设置为 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 看看是否有帮助。另外,请查看以下参考:

      W3C Recommended list of Doctype declarations

      【讨论】:

        猜你喜欢
        • 2015-10-27
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 2020-10-05
        • 2023-03-21
        • 2016-02-26
        • 2013-12-15
        • 2011-02-03
        相关资源
        最近更新 更多