1

我正在一个页面上实现 Bing 地图(我更喜欢谷歌地图,但这不是我的选择)。我正在关注 MS 在此处提供的教程:http: //msdn.microsoft.com/en-us/library/bb412551.aspx

使用 MS 的代码,一切正常。用我自己的一些 jQuery 代码充实它,我发现每次运行 $.get(); 时都会收到“Permission Denied”错误。我认为这是某种“同源”冲突,但经过多次检查,我确定我没有向任何其他主机请求任何内容(甚至不是 www.example.com 与 example.com - 一切都在同一主持人)。

经过一番挫折,我终于将原因归结为 MS 代码中的 META 标签:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

这是在我的 HEAD 部分的底部。在阅读规范时。对于 META 标签(我不是很熟悉),我发现一些服务器可能会将 http-equiv 标签直接转换为 HTTP 标头,而其他服务器可能只是按原样发送它们。因为我相信标题必须在任何内容之前发送,我将 META 标签移到了 HEAD 部分的 BEGINING,一切正常。

另一个细节:我只在 IE7 中遇到了问题。当我在FF中测试时,我完全没有问题。

所以这是我的问题:具有 http-equiv 属性的 META 标签是否应该位于 HEAD 部分的开头?IE只是很奇怪吗?还是 FF 只是特别宽容?

谢谢!

4

1 回答 1

2

从 HTML5 草案规范(http://dev.w3.org/html5/spec/semantics.html#charset):

4.2.5 元元素

[剪辑]

4.2.5.5 指定文档的字符编码

状态:最后一次征求意见

字符编码声明是一种机制,通过该机制指定用于存储或传输文档的字符编码。

以下限制适用于字符编码声明:

* The character encoding name given must be the name of the character encoding 
  used to serialize the file.
* The value must be a valid character encoding name, and must be an ASCII
  case-insensitive match for the preferred MIME name for that encoding. 
  [IANACHARSET]
* The character encoding declaration must be serialized without the use of 
  character references or character escapes of any kind.
* The element containing the character encoding declaration must be serialized
  completely within the first 512 bytes of the document.
* There can only be one character encoding declaration in the document.

注意第四个要点。我相信 512 字节规则是过去选择不同限制的传统浏览器之间的妥协,但我认为,所有浏览器都有一定长度的字节限制。这可能是原因,尽管我不知道为什么它会导致“Permission Denied”错误。

于 2010-07-15T23:32:53.613 回答