【问题标题】:Accessing json file from another domain从另一个域访问 json 文件
【发布时间】:2013-08-23 17:18:55
【问题描述】:

我有两个网站:

www.siteone.com 
www.sitetwo.com

现在我必须通过脚本从www.sitetwo.com 获取数据,从而在www.siteone.com 中显示数据 由于我必须获取特定数据,因此我将变量从www.siteone.com 传递给www.sitetwo.com,如下所示:

 //script in www.siteone.com
<script type="text/javascript">
    $(document).ready(function(){
        window.$vars = {
            id:"form"
        };
</script>

www.sitetwo.com,我有以下脚本:

//script in www.sitetwo.com
<script type="text/javascript">
 var k = window.$vars.id;
$("#form").dform("http://www.sitetwo.com/"+k+'.json', function(data) {

          this
          data

        });
</script>

在这里,我从站点一传递到站点二的值“id”被脚本正确接收。但由于跨域,我无法打开 form.json 文件。抛出以下错误:

XMLHttpRequest cannot load http://www.sitetwo.com/form.json. Origin http://www.siteone.com is not allowed by Access-Control-Allow-Origin.

如何从www.siteone.com访问form.json

【问题讨论】:

  • jsonp 就是答案。您需要找到一种将 jsonp 与 dform ajax 调用一起使用的方法。
  • dform 是该页面中加载的另一个脚本的函数。在这些情况下,我们如何有效地使用 jsonp??
  • 我没有使用过那个 dform 脚本。使用 jquery ajax,您可以通过将 dataType 设置为 jsonp 轻松使用 jsonp。

标签: javascript jquery cross-browser cross-domain jsonp


【解决方案1】:

浏览器标准不允许您从另一个域加载 JSON,因为 same-origin policy。使用JSONP

【讨论】:

    【解决方案2】:

    您可以从服务器端脚本发送额外的标头。

    header("Access-Control-Allow-Origin: http://www.sitetwo.com");
    

    Access-Control-Allow-Origin Multiple Origin Domains?

    【讨论】:

    • 它涉及到配置服务器。但是我们不能直接在脚本中使用这个头吗??
    猜你喜欢
    • 2015-01-25
    • 2014-01-12
    • 2019-03-05
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多