创建在不同服务器上使用的javascript文件

时间:2018-10-03 14:31:54

标签: javascript html ajax server

我想创建一个JS文件,其他人可以在他们的网站上包括这些文件,以便他们可以使用类似于facebook like按钮的API来引用访问我的数据库的功能,该按钮显示喜欢的总人数以及喜欢该页面的朋友中的谁。作为测试的一部分,我一直在做以下事情: JS文件

function getItemRating(id){
    var result = "";
    $.ajax({
        type: "POST",
        url: "http://siteurl.com/api/rating.php",
        data: {i : id},
        dataType: "json",
        async: false,
        success: function(data) { // callback for successful completion
          result = data;
        },
        error: function() { // callback if there's an error
          result = 'error';
        }
      });
    return result;
}

参考文件包括:

header("Access-Control-Allow-Origin: *");

,在另一台服务器上,我尝试了几种方法,包括:

    <!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>

<script type="text/javascript" src="www.siteurl.com/api/rating-file.js"></script>
<script type="text/javascript">
    $(document).ready(function(){
    var result = getItemRating(1);
    console.log(result);


});
</script>
</head>
<body></body>
</html>

但是目前我在控制台中遇到错误:

VM133:1已从CORS策略阻止从源“ http://siteurl.com/api/rating.php”访问“ http://otherurl.com”处的XMLHttpRequest:对预检请求的响应未通过访问控制检查:否“访问控制” -Allow-Origin标头出现在请求的资源上。

siteurl.com =我的js文件(带有功能)所在的服务器 otherurl.com =包含js的html所在的其他服务器

1 个答案:

答案 0 :(得分:0)

错误消息告诉您问题出在对预检请求的响应上,但是您不应该首先触发一个。

删除:

contentType: "application/json; charset=utf-8",

因为:

  • 这是一个谎言。您不会在GET请求中发布JSON。
  • 将content-type设置为该值会触发预检请求。