代码之家  ›  专栏  ›  技术社区  ›  Ian Boyd

无法使用IE8查看XML文件的源

  •  1
  • Ian Boyd  · 技术社区  · 14 年前

    我有一个网页 XML 具有 xsl 样式表转换,例如:

    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type='text/xsl' href='/css/homepage.xsl'?>
    <MyData>
       ...
    </MyData>
    

    XML源文件无法查看

    Some claim 这种行为 by design .

    但我可以给你一个网站,在那里你所期望的行为是完美的( Blizzards WoW Armory )(即你 查看xml源):

    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="/_layout/pageIndex.xsl"?>
    <page globalSearch="1" lang="es_mx" requestUrl="/index.xml" type="front">
      <pageIndex>
        <related-info/>
      </pageIndex>
    </page>
    

    因此,“这种行为是故意的”这一论点被直接观察所推翻。

    我的 XML,源XML不能显示?


    带你走错了路

    这是一些补充资料。

    来自暴雪(工作)站点的Http响应头:

    GET http://www.wowarmory.com/ HTTP/1.1
    
    HTTP/1.1 200 OK
    ...
    Content-Type: text/xml;charset=UTF-8
    Content-Length: 233
    
    <?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="/_layout/pageIndex.xsl"?><page globalSearch="1" lang="es_mx" requestUrl="/index.xml" type="front">
      <pageIndex>
        <related-info/>
      </pageIndex>
    </page>
    

    GET http://www.example.com/default.ashx HTTP/1.1
    
    HTTP/1.1 200 OK
    ...
    Content-Type: text/xml; charset=utf-8
    ...
    Content-Length: 131974
    
    <?xml version="1.0" encoding="utf-8"?>
    <?xml-stylesheet type='text/xsl' href='/css/homepage.xsl'?>
    <MyData>
       ...
    </MyData>
    

    另请参见

    4 回复  |  直到 7 年前
        1
  •  2
  •   Ian Boyd    14 年前

    热释光;博士 no-cache 已打开

    长版本

    我偶然发现了一个有类似问题的人的博客:

    使用Fiddler的自动调试功能(我从未使用过这个功能),他缩小了范围,减少了响应头中特定条目的出现:

    Vary: *
    

    为什么? 这个头球是造成IE打破,但他能够删除它,它修复了他的问题。我没钱 vary: 0 我的回答是头球,但它确实给了我一个方向。

    HttpCachePolicy.SetOmitVaryStar Method

    使用vary:*头可以禁用所有客户端缓存。

    跟着这家伙的脚步,我挖出小提琴手,打开了门 响应后自动断点 功能。结果是,你可以用响应头,重新排列,添加,更改,删除东西。

    原始标头(失败)

    HTTP/1.1 200 OK
    Date: Thu, 01 Jul 2010 02:53:35 GMT
    Server: Microsoft-IIS/7.0
    Cache-Control: no-cache
    Pragma: no-cache
    Content-Type: text/xml; charset=utf-8
    X-AspNet-Version: 2.0.50727
    X-Powered-By: ASP.NET
    Content-Length: 134772
    Via: 1.1 www.example.com
    
    <?xml version="1.0" encoding="utf-8"?>
    ...
    

    Cache-Control: no-cache
    Pragma: no-cache
    

    如果我把这些拿走?我进入fiddler中的spot并手动删除这两行,留下:

    删除缓存控制头

    HTTP/1.1 200 OK
    Date: Thu, 01 Jul 2010 02:55:06 GMT
    Server: Microsoft-IIS/7.0
    Content-Type: text/xml; charset=utf-8
    X-AspNet-Version: 2.0.50727
    X-Powered-By: ASP.NET
    Content-Length: 134772
    Via: 1.1 www.example.com
    
    <?xml version="1.0" encoding="utf-8"?>
    ...
    

    标题不是错误的,内容总是过时的,我 希望 每次刷新的客户端。

    我最初的解决方案解决了这个问题,但引入了一个新的解决方案-因为 总是陈腐的。当我想的时候 ie公司

    电话线 ashx 给我带来悲伤的是:

    //client don't cache it (it's too volatile)
    context.Response.Cache.SetCacheability(HttpCacheability.NoCache); 
    

    变成了:

    Cache-Control: no-cache
    

    删除该行会将Cacheability保留为其默认值(Private),并给出响应值:

    Cache-Control: private
    

    这允许客户端缓存内容,我可以在浏览器中查看源代码。

        2
  •  1
  •   user357812 user357812    14 年前

    http://www.aranedabienesraices.com.ar

    使用IE8,我可以看到源代码和转换结果(Tools菜单)。

    是否与私有缓存有关?

        3
  •  0
  •   PatomaS    12 年前

    这几天我在InternetExplorer9中遇到了同样的问题,但是使用了兼容性视图以及它在开发人员工具中提供的7和8版本。

    我把这个放在我的口袋里 .htaccess

    <FilesMatch "\.(php)$">
        Header unset Cache-Control
        Header set Cache-Control "max-age=86400, s-maxage=86400, no-store"
        Header set Pragma "cache"
        Header set Expires "Mon, 5 Aug 2013 20:00:00 GMT"
    </FilesMatch>
    

    <FilesMatch "\.(php)$">
        Header unset Cache-Control
        Header set Cache-Control "max-age=86400, s-maxage=86400, store"
        Header set Pragma "cache"
        Header set Expires "Mon, 5 Aug 2013 20:00:00 GMT"
    </FilesMatch>
    

    我在试图弄清楚为什么在windows和linux的每个浏览器上看起来都正常的页面在compatibility view或旧版本的Explorer中不起作用时出现了这个错误。这个问题仍然是个谜,因为文档和头被设置为utf-8,但那是另一回事。