我正在页面上实施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中测试时,我完全没有问题。
所以这是我的问题:META标签的http-equiv属性是否支持HEAD部分的开头? IE是不是很奇怪?或者FF只是特别原谅?
谢谢!
答案 0 :(得分:1)
从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字节规则是传统浏览器之间的折衷,它们在过去选择了不同的限制,但我认为所有浏览器都有一定长度的字节限制。这可能是原因,但为什么它应该导致“权限被拒绝”错误,我不知道。