No' Access-Control-Allow-Origin'当javascript文件提供给外部网站时

时间:2016-02-09 01:41:23

标签: javascript html json rest

我的网站提供了一个用户可以在其网站中添加的javascript文件。这个javascript文件反过来调用我的应用程序端点并获取一些然后输入到用户的内容。 div

这是JS的代码

(function(){
    $(document).ready(function(){
        var test = $('#FooBar');
        var id = test.data('id');
        $.get('http://example.com/serve/'+id, function(data){
            test.html(data);
        });
    });
})();

但是当用户在自己的网站上引用此JS文件时,会出现以下错误:

  

XMLHttpRequest无法加载   http://example.com/serve/qeFz7TvGlg。   No' Access-Control-Allow-Origin'标题出现在请求的上   资源。起源' http://localhost:8000'因此是不允许的   访问。

这是我为测试而创建的示例HTML

<!doctype html>
<html>
    <body>
        <div id="FooBar" data-id="qeFz7TvGlg"></div>
        <script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
        <script src="http://example.com/scripts/myjsfile.js"></script>
    </body>
</html>

2 个答案:

答案 0 :(得分:1)

您的服务器需要指定Access-Control-Allow-Origin标头(可能指向*,这意味着“全部”)。这称为CORS

举一个简单的例子,这里是你如何在node.js中做到这一点:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");

修改

由于您的服务器位于Grails中,请查看this question有关如何启用CORS的信息。

答案 1 :(得分:0)

如果您运行的是Grails服务器,请查看this链接。您应该能够打开或创建web.xml文件,并将网站上的内容复制到那里。