大家好我在3天之内就这个问题进行斗争和搜索。我从sharethis.com RESTapi获取数据时遇到问题。我正在使用jQuery和Laravel 5.2。我想从这个json中获取值:http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.com但是我很沮丧地尝试了很多方法和函数。我的实际代码是:
function setHeader(xhr) {
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');
xhr.setRequestHeader('Access-Control-Allow-Headers', 'Content-Type');
xhr.setRequestHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
}
$.ajax({
url: 'http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.com',
type: 'GET',
beforeSend: setHeader,
contentType: 'application/json; charset=utf-8',
success: function() { alert("Success"); },
error: function() { alert('Failed!'); }
});
此请求始终返回"失败!"。我理解CORS的含义,但在实践中,我无法使其发挥作用。有任何想法吗?感谢..
答案 0 :(得分:1)
也许你真的不理解CORS:)
这些标题必须出现在响应中,而不是在请求中。
服务器必须提供它们。
服务器必须同意。
您提供的网址没有CORS标头,因此您无法通过AJAX获取它,除非您修改后端。
答案 1 :(得分:0)
使用XMLHttpRequest运行此代码以获取数据
var url = "http://rest.sharethis.com/v1/count/urlinfo?url=http://www.sharethis.com";
var xhr = createCORSRequest('GET', url);
xhr.setRequestHeader(
'X-Custom-Header', 'value');
xhr.withCredentials = true;
xhr.onload = function () {
if (this.status === 200) {
console.log(xhr);
}
};
xhr.send();
还有检查url是否支持CORS的功能
function createCORSRequest(method, url)
{
var xhr = new XMLHttpRequest();
if ("withCredentials" in xhr) {
// XHR for Chrome/Firefox/Opera/Safari.
xhr.open(method, url, true);
console.log("for chrome/fir");
} else if (typeof XDomainRequest != "undefined") {
// XDomainRequest for IE.
xhr = new XDomainRequest();
xhr.open(method, url);
console.log("ie");
} else {
// CORS not supported.
xhr = null;
console.log("not supported");
}
return xhr;
}
希望它有所帮助,问候