【问题标题】:JSON Cross-Domain ErrorJSON 跨域错误
【发布时间】:2016-07-27 00:16:19
【问题描述】:

伙计们...我已经尝试了很多来解决这个问题,在这里和其他站点中找到了一些解决方案...但是我没有找到解决这个问题的方法!

那么真正的问题是什么.. 很简单,我有这个代码:

    function refreshRadioStats()
{
    jQuery.support.cors = true;
    $.get('http://raphaleao.com/json', function(data){
        var templateStats = '<span class="glyphicon glyphicon-music"></span> '+ j_lang[0] +
                            '<marquee><h4><i>'+data.musica_atual+'</i></h4></marquee><br>'+
                            '<span class="glyphicon glyphicon-headphones"></span> '+j_lang[1]+': <b>'+data.ouvintes_conectados+
                            '</b><br>'+
                            '<span class="glyphicon glyphicon-user"></span> '+j_lang[3]+': <b>'+locutor+'</b><br><br>'+
                            '<button type="button" class="btn btn-info" id="refreshstadistics" style="width:100%"><span class="glyphicon glyphicon-refresh"></span> '+ j_lang[2] +'</button>';
        $('#resultse').append(templateStats);
    },'json');
}

好的,有什么问题吗? 问题是:脚本显然无法访问网站 http://raphaleao.com/json 并且为此不起作用。 问题:

XMLHttpRequest 无法加载 http://raphaleao.com/json。 “Access-Control-Allow-Origin”标头包含多个值“*、*”,但只允许一个值。 Origin 'Stack don't allow me post more than 2 links' 因此不允许访问。

该脚本有效,因为我已经在 JSON 中与其他站点进行了测试并且可以完美运行。我已经把它放在 web.config 中了:

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

同样的问题,你们能帮我解决这个问题吗?


我已经解决了 好吧,在尝试了一些事情之后,@mattferderer 打开了我的思路,我弄清楚了这一切是怎么回事......

首先我删除了 web.config 端,只留下 header() 函数。好的,第一个问题已解决(大声笑);

而且,我已经弄清楚为什么 $.getJSON() 不加载其他网站的信息...很简单,只需添加(至少我在 PHP)这个:

header('Content-Type: text/javascript');

在我的例子中,页面的格式是 text/html,所以 $.getJSON() 将无法加载该页面中的所有信息!

谢谢大家,对糟糕的英语感到抱歉!

【问题讨论】:

  • 你的后端是什么?您一定是在某处错误地设置了访问控制来源,或者它合并了两个不同 web.configs 中的值。
  • 目标服务器必须提供Access-Control-Allow-Origin 标头。如果没有,您将无法从浏览器访问内容。
  • 你是什么意思@Jack?因为我是这个世界的新人,对不起:(
  • 是的@Pointy,我已经在 json.php 上放了一个标题,但同样的问题......

标签: javascript json cross-domain


【解决方案1】:

尝试从您的 web.config 中删除 access-control-allow-origin,因为问题是 access-control-allow-origin 被使用了两次。如果您查看响应标头,它会显示:

HTTP/1.1 200 OK
Content-Type: text/html
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: PHP/5.5.11
Access-Control-Allow-Origin: *
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Date: Wed, 06 Apr 2016 14:43:54 GMT
Content-Length: 387

【讨论】:

  • 是的,我忘了这样做...谢谢兄弟!
猜你喜欢
  • 1970-01-01
  • 2016-11-17
  • 2011-02-22
  • 2016-01-30
  • 2013-11-21
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 2018-01-03
相关资源
最近更新 更多