我正在尝试设置自动 JSLint 测试,该测试将从目标网站获取 js 文件,然后使用 Selenium 针对将使用 Js 文件的 url 执行 JSLint 测试的测试站点运行它。
我在尝试使用两个不同的本地主机网站进行本地测试时遇到问题。
$(function () {
$.ajax({
url: "http://code.jquery.com/jquery-latest.min.js",
//url: "http://localhost:62338/Scripts/test.js", // url to other local site
dataType: "text"
}).done(function (data) {
var myResult = JSLINT(data);
..
});
});
如果我使用指向 jquery url 的 url 运行上面的代码,它可以正常工作并且 JSLint 会分析这个文件。但是,如果我尝试将它指向我的其他 localhost 站点中的 js 文件,那就太糟糕了。如果我在 Chrome 中查看网络检查器,它会显示对脚本的调用已取消。
任何想法为什么我无法以这种方式访问本地托管的 js 文件?
顺便说一句,我正在使用 MVC4 Web 项目。
编辑:我对 Cors 或指向我的 IP 没有运气,但 Dominic 的回答最终让我想到了这个问题,我可以在其中禁用 Chrome 的安全性。我根本不喜欢这个选项,但它只是在我设置所有 TeamCity 东西之前在本地测试,并且一旦 Chrome 重新启动,更改就会撤消。
Edit2:这个问题的第二个答案也对我有用,添加:
<httpProtocol>
<customHeaders>
<clear />
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
..到目标站点的 web.config 我能够让它工作而不必禁用 Chrome 上的安全性。由于目标站点只是一个虚拟站点并且正在本地使用,这对我来说效果更好。