没有& # 39;Access-Control-Allow-Origin& # 39;控制台日志的头


No 'Access-Control-Allow-Origin' header on my console log

我在控制台日志中有这个错误:

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>'
);

任何想法吗?谢谢。

你可以看看这里:这个问题已经被社区广泛讨论。最好理解这个概念,然后它就很容易了。

Access-Control-Allow-Origin头文件是如何工作的?

Access-Control-Allow-Origin

"请求的资源上没有'Access-Control-Allow-Origin'标头"

设置Access-Control-Allow-Origin存在哪些安全风险?

您显然正在尝试跨域Ajax请求。这意味着您试图联系的服务器在不同的域/端口上,而不是原始网页所在的服务器。这被称为跨域请求,默认情况下是不允许的。你可以在这里阅读浏览器的同源安全策略。

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

Access-Control-Allow-Origin标头是允许这种类型访问的一种方式,但它显然没有应用该标头,因此请求被浏览器拒绝。你可以阅读CORS(跨域资源共享)是如何工作的,在这里输入链接描述。

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

根据本页的文档,Markit on Demand似乎支持JSONP,因此您可以使用该表单进行跨域请求。如果你为$.ajax()设置适当的dataType: "jsonp"选项,jQuery的ajax支持这种格式。