繁体   English   中英

从另一个localhost站点引用一个localhost站点中的Js脚本

[英]Referencing Js script in one localhost site, from another localhost site

我正在尝试设置自动JSLint测试,它将从目标网站获取js文件,然后使用Selenium对测试站点运行它,该站点将使用Js文件的url执行JSLint测试。

我在尝试使用两个不同的localhost网站进行本地测试时遇到了问题。

 $(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重新启动,更改就会撤消。

编辑 2:这个问题的第二个答案也适用于我,通过添加:

<httpProtocol>
      <customHeaders>
        <clear />
        <add name="Access-Control-Allow-Origin" value="*" />
      </customHeaders>
    </httpProtocol>

..到目标网站的web.config我能够让这个工作无需在Chrome上禁用安全性。 由于目标站点只是一个虚拟站点并且正在本地使用,因此这对我来说效果更好。

这可能是由于相同的原始策略不允许ajax调用转到localhost。 这可以通过在拨打电话前更改以下设置来解决。

jQuery.support.cors = true

您可以通过将localhost更改为计算机的IP来解决此问题。

JavaScript不能做跨域请求,除非特别列入白名单的调用域,因为你正在进行测试,没有理由你想要这样做。

如果您有某种版本设置(SVN,GIT)挂钩到Selenium并在存储库中的源代码上运行您的测试。

您还可以将JSLint挂钩到预提交挂钩中,该挂钩将拒绝任何非JSLinted的JS代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM