繁体   English   中英

进行$ .ajax调用时出现错误(跨域请求被阻止)

[英]Getting a error(Cross-Origin Request Blocked) when making an $.ajax call

我正在打电话获取一些信息,但是我一直收到此错误

跨域请求被阻止:(原因:缺少CORS标头“ Access-Control-Allow-Origin”)

$.ajax({
  type: 'GET',
  url: www.example.com/,
  dataType:"json",
  success: function(data) {
    alert(data)
  },
  error: function() {
    alert('error')
  }
});

返回的东西是作为json来的

有任何想法吗?

除非已启用服务器应用程序来服务跨域请求,否则将无法获得成功的响应,因为默认情况下已禁用CORS以防止受到安全攻击。 为避免CORS错误,请在响应中添加以下标头:

访问控制允许来源:*

有关更多详细信息,请通读此url

在这里 ,Mozilla开发人员很好地解释了有关CORS请求黑客的问题。

首先,我认为应将url: www.example.com/引用为url: "www.example.com" 第二,除非服务器允许,否则您将无法发出跨域Ajax请求https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS 您可以使用CORS或JSONP。

默认情况下,您不允许发出跨域请求。 如果要允许您向example.com发出请求,则CORS标头 “ Access-Control-Allow-Origin”必须包含您的域。

请参阅如何发出跨域请求 ,以获取有关如何发出跨域请求的更多信息。

您可以通过jsonp发出请求来绕过CORS(仅GET请求!)

$.ajax({
  type: 'GET',
  url: www.example.com/,
  dataType:"jsonp",
  success: function(data) {
    alert(data)
  },
  error: function() {
    alert('error')
  }
});

更多信息

我可以使用$ .ajax调用中的以下选项解决问题。

xhr.withCredentials = true; Access-Control-Allow-Credentials: true

阅读以下内容以更好地理解这一点。

withCredentials

默认情况下,标准CORS请求不会发送或设置任何Cookie。 为了将cookie包括在请求中,您需要将XMLHttpRequest的.withCredentials属性设置为true:

xhr.withCredentials = true;

为了使其工作,服务器还必须通过将Access-Control-Allow-Credentials响应标头设置为“ true”来启用凭据。 有关详细信息,请参见服务器部分。

访问控制允许凭据:true

.withCredentials属性将在请求中包括来自远程域的所有cookie,并且还将设置来自远程域的所有cookie。 请注意,这些cookie仍然遵循同源策略,因此您的JavaScript代码无法访问来自document.cookie或响应头的cookie。 它们只能由远程域控制。

希望这也对您有帮助:)

我认为PHP网站需要放置这样的内容,在我的网站上我将其称为apiheader,并在需要时将其包括在内

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM