我最近一直在使用 jQuery,遇到了一个问题,我无法将其包含在用户脚本中,因为 XmlHttpRequest 使用同源政策 http://en.wikipedia.org/wiki/Same_origin_policy。经过进一步测试我发现大多数浏览器也支持跨域资源共享 http://www.w3.org/TR/access-control/W3C 定义的访问控制作为同源策略问题的解决方法。我通过在本地 Web 服务器上托管 jQuery 脚本来测试这一点,其中包括Access-Control-Allow-Origin: *
http 标头,它允许使用 XmlHttpRequest 下载脚本,以便将其包含在我的用户脚本中。我想在发布脚本时使用 jQuery 的托管版本,但到目前为止使用诸如http://www.seoconsultants.com/tools/headers http://www.seoconsultants.com/tools/headers我还没有找到任何允许跨源访问 jQuery 脚本的网站。这是迄今为止我测试过的列表:
- http://www.asp.net/ajaxlibrary/CDN.ashx http://www.asp.net/ajaxlibrary/CDN.ashx
- http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery http://code.google.com/apis/ajaxlibs/documentation/index.html#jquery
- http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery http://docs.jquery.com/Downloading_jQuery#CDN_Hosted_jQuery
是否有任何其他托管版本的 jQuery 允许跨源访问?我知道 jQuery 通常是通过脚本标签(有时是动态创建的脚本标签)加载的,但在这种特定情况下,我必须使用 XmlHttpRequest 和 Eval 来确保它加载到正确的范围中。谷歌浏览器支持用户脚本但不支持@require,这意味着唯一的使用方式Google Chrome 中用户脚本中的 jquery https://stackoverflow.com/questions/2246901/include-jquery-inside-greasemonkey-script-under-google-chrome/2626067#2626067是将其嵌入到 .user.js 文件中或通过 XmlHttpRequest 加载并评估它。嵌入不是最佳解决方案,虽然 Chrome 扩展允许您在扩展中包含 jQuery js 文件,但我更愿意坚持使用用户脚本,因为它们更简单并且可以在多个浏览器中工作。我已经通过以下方式提交了门票谷歌 Ajax API http://code.google.com/p/google-ajax-apis/issues/detail?id=427 and jQuery http://forum.jquery.com/topic/cdn-hosted-jquery-does-not-allow-cross-domain-origin-access团队允许跨域访问 CDN,但我的猜测是我现在只需要自己托管它。
自从您提出这个问题以来,Google CDN 已根据要求添加了这些标头。快速获取https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js产生标题:
access-control-allow-origin:*
因此添加一个像这样的脚本标签就可以了:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js" crossorigin="anonymous" type="text/javascript"></script>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)