No' Access-Control-Allow-Origin'我的控制台日志上的标题

时间:2015-07-20 07:28:35

标签: php jquery ajax

我的控制台日志中出现此错误:

  

XMLHttpRequest无法加载http://example.com/jsonconnect1.php。没有   '访问控制允许来源'标题出现在请求的上   资源。起源' null'因此不允许访问。

我知道有很多问题已经被问到,但他们都使用了#ajax'调用我的代码使用getjson

$(document).ready(function(){

var url="http://example.com/jsonconnect1.php";

$.getJSON(url,function(json){

// loop through the members here

$.each(json.members,function(i,dat){

$("#msg").append(

'<div class="members">'+

'<h1>'+dat.id+'</h1>'+

'<p>Firstname : <em>'+dat.username+'</em>'+

'<p>SurName : <em>'+dat.mobileno+'</em></p>'+

'<p>Title : <strong>'+dat.total+'</strong></p>'+

'<hr>'+

'</div>'

);

有什么想法?感谢。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您显然正在尝试跨域Ajax请求。这意味着您尝试联系与原始网页所在的域/端口不同的域/端口上的服务器。这称为交叉原始请求,默认情况下不允许。您可以阅读有关浏览器的同一来源安全政策here

为了允许直接发出跨域请求,您提出请求的服务器必须明确允许它。

Access-Control-Allow-Origin标头是允许此类访问的一种方式,但它显然没有应用该标头,因此浏览器拒绝了该请求。您可以在此处了解CORS(跨源资源共享)如何工作enter link description here

制作跨源请求的其他方法是使用JSONP(还需要目标服务器的协作以支持JSONP请求)或通过代理(允许您联系的另一个服务器,可以向所需的服务器发出请求)你并将结果归还给你。代理在您有权访问的服务器上需要您自己的服务器代码,但不需要目标服务器的协作。

Per the doc on this page,Markit On Demand似乎支持JSONP,因此您可以将该表单用于跨源请求。如果为dataType: "jsonp"设置适当的$.ajax()选项,jQuery的ajax支持该格式。