我正在打电话获取一些信息,但我一直收到此错误
阻止跨源请求:(原因:缺少CORS标头'Access-Control-Allow-Origin')
$.ajax({
type: 'GET',
url: www.example.com/,
dataType:"json",
success: function(data) {
alert(data)
},
error: function() {
alert('error')
}
});
正在返回的内容将以json
的形式出现任何想法?
答案 0 :(得分:3)
除非已启用服务器应用程序以提供Cross-Origin-Request,否则无法获得成功的响应,因为默认情况下已禁用CORS以防止安全攻击。要避免CORS错误,请在响应中添加以下标头:
Access-Control-Allow-Origin:*
有关详情,请仔细阅读url。
Here,Mozilla开发人员很好地解释了CORS请求黑客。
答案 1 :(得分:0)
首先,我认为url: www.example.com/
应该引用url: "www.example.com"
。其次,除非服务器允许,否则您无法进行跨域ajax请求https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS。您可以使用CORS或JSONP。
答案 2 :(得分:0)
默认情况下,您不允许发出跨域请求。 CORS header' Access-Control-Allow-Origin'如果您被允许向example.com
提出请求,则必须包含您的域名。
有关如何发出跨域请求的详细信息,请查看How to make cross domain request。
答案 3 :(得分:0)
您可以通过jsonp(仅限GET请求!)
发出请求来绕过CORS$.ajax({
type: 'GET',
url: www.example.com/,
dataType:"jsonp",
success: function(data) {
alert(data)
},
error: function() {
alert('error')
}
});
答案 4 :(得分:0)
我能够在$ .ajax调用中使用以下选项解决我的问题。
xhr.withCredentials = true;
Access-Control-Allow-Credentials: true
请阅读以下内容以更好地理解这一点。
withCredentials
标准CORS请求默认不发送或设置任何cookie。为了将cookie包含在请求中,您需要将XMLHttpRequest的.withCredentials属性设置为true:
xhr.withCredentials = true;
为了使其正常工作,服务器还必须通过将Access-Control-Allow-Credentials响应标头设置为“true”来启用凭据。有关详细信息,请参阅服务器部分。
Access-Control-Allow-Credentials:true
.withCredentials属性将包含来自请求中远程域的任何cookie,并且还将设置来自远程域的任何cookie。请注意,这些Cookie仍然遵循同源策略,因此您的JavaScript代码无法访问document.cookie或响应标头中的Cookie。它们只能由远程域控制。
希望这也可以帮助你:)
答案 5 :(得分:0)
我认为PHP网站需要放置这样的东西,在我的网站上我只是称之为apiheader,并在需要时包含它