我最近一直在使用jQuery并遇到一个问题,我无法将其包含在用户脚本中,因为XmlHttpRequest使用
same origin policy.经过进一步测试后,我发现大多数浏览器也支持W3C定义的
Cross-Origin Resource Sharing访问控制作为问题的解决方法同源政策.我通过在包含Access-Control-Allow-Origin:* http标头的本地Web服务器上托管jQuery脚本来测试这一点,该标头允许使用XmlHttpRequest下载脚本,以便它可以包含在我的用户脚本中.我想在发布脚本时使用托管版本的jQuery,但到目前为止使用像
http://www.seoconsultants.com/tools/headers这样的工具进行测试我还没有发现任何允许跨源访问jQuery脚本的站点.这是我到目前为止测试的列表:
> http://www.asp.net/ajaxlibrary/CDN.ashx
> http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery
> http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery
是否有任何其他托管版本的jQuery允许跨源访问?我知道jQuery通常是通过脚本标记(有时是动态创建的脚本标记)加载的,但在这种特定情况下,我必须使用XmlHttpRequest和Eval来确保它被加载到正确的范围内. Google Chrome支持用户脚本但不支持@require,这意味着使用jquery in a user script in Google Chrome的唯一方法是将其嵌入.user.js文件中,或通过XmlHttpRequest加载和评估它.嵌入是一个不太理想的解决方案,虽然Chrome Extensions允许您将jQuery js文件包含在扩展中,但我更喜欢使用用户脚本,因为它们更简单,并且可以在多个浏览器中工作.我已经提交了Google Ajax APIs和jQuery团队的门票,允许跨域访问CDN,但我的猜测是我现在必须自己托管它.