我正在使用Google Drive API,但在从客户端检索数据时出现此错误:
XMLHttpRequest cannot load url. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
请注意,我不允许更改标题。
有没有办法请求跨域?
var req = {
action: 'getFiles',
};
this.getJSON('drive.php', req, function(serverData)
{
console_log(serverData);
});
上面的代码给出了这个错误。我该如何解决这个问题?
一个选项:
var url = 'drive.php';
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
data: {action: 'getFiles'},
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.dir(json.sites);
},
error: function(e) {
console.log(e.message);
}
});
仍然会出现GET错误
答案 0 :(得分:0)
您可以使用JSONP发出请求;请参阅以下示例。 http://www.sitepoint.com/jsonp-examples/
该网站的一个例子:
(function($) {
var url = 'http://www.jquery4u.com/scripts/jquery4u-sites.json?callback=?';
$.ajax({
type: 'GET',
url: url,
async: false,
jsonpCallback: 'jsonCallback',
contentType: "application/json",
dataType: 'jsonp',
success: function(json) {
console.dir(json.sites);
},
error: function(e) {
console.log(e.message);
}
});
})(jQuery)
;
答案 1 :(得分:0)
不是真的。出于安全原因,不允许跨域请求。你能做的是以下几点:
编写一个PHP脚本,它只转发您的请求,并将此PHP脚本放在与JavaScript相同的服务器中。因此,您的JS将在域上执行请求,并且最终不会出现错误。
答案 2 :(得分:0)
在php中你需要
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST/GET');
插入头文件.php,它允许客户端POST数据与方法POST / GET到服务器并从中获取接收器...