Web服务器如何检测响应文档的Content-Type?

时间:2010-06-30 07:28:56

标签: jquery ajax xhtml content-type

我有2个相同的xhtml文档,这些文档位于 html(第一个) xhtml(第二个)扩展名中。差异仅在扩展中。

使用ajax(jQuery 1.4.1)我尝试获取 1st ,但是Web服务器(IIS 5.1)使用Content-Type: text/html而不是application/xhtml+xml发送响应。如果我尝试第二次,则没有问题。

对于这两个文档,我使用$ .ajax({...}),但是我收到错误 1st (在评论中):

$.ajax({ 
  url: url, 
  dataType: 'xml', 
  contentType: 'application/xhtml+xml', 
  success: function(data, ts, theXhr) { ... },
  error: function(XMLHttpRequest, textStatus, errorThrown) {
    // textStatus = "parsererror"
    // errorThrown.lineNumber = 5193
    // errorThrown.message = "data is null"
    // errorThrown.name = "TypeError"
  }
});

---

如何让[任何]网络服务器认为第一个文档是真正的xhtml?

3 个答案:

答案 0 :(得分:0)

第一份文件是否形成良好?解析错误可能意味着无效的xml。

答案 1 :(得分:0)

AFAIK IIS使用文件扩展名来检测内容类型。您可以在IIS配置页面中看到MIME类型映射。

答案 2 :(得分:0)

  

如何使[任何] Web服务器思考   第一个文件是真正的xhtml?

从javascript的答案是:你不能。 Web服务器决定要发送的Content-Type。

如果您控制服务器: 您可以配置IIS以发送正确的Content-Type

如果您不控制服务器:除了使用服务器端脚本获取页面并发送正确的标题之外,您无能为力。

如何在IIS 5.0中添加内容类型(来自msdn):

  

将MIME类型添加到IIS 5.0

     

可以在IIS中注册MIME类型   5.0使用IIS管理单元。

     

例如,添加XML MIME类型   到使用IIS的默认网站   管理单元:

     
      
  1. 选择默认网站并启动   “属性”对话框。
  2.   
  3. 选择HTTP标头选项卡。
  4.   
  5. 在“MIME地图”下,单击“文件类型”   选项卡并选择新类型。
  6.   
  7. 在“扩展名”字段中键入.xml   内容类型字段中的text / xml,   然后单击“确定”。
  8.         

    将XML MIME类型添加到在给定计算机上运行的所有站点:

         
        
    1. 选择“Internet信息服务”   并打开“属性”对话框   框。

    2.   
    3. 在“计算机MIME映射”下,单击“   单击编辑按钮并选择新类型。

    4.   
    5. 在“扩展名”字段中键入.xml   内容类型字段中的text / xml,   然后单击“确定”。

    6.         

      任何其他扩展名,例如.xsl   (可扩展样式表),可能是   使用相同的程序添加。

只需使用您想要的扩展名/内容类型更改.xmltext/html