使用xhr请求Google Place API会出现CORS问题

时间:2014-12-28 08:26:32

标签: javascript google-api xmlhttprequest cors

在我的网页上,我有一些javascript代码可以查询Google Place API(GET)以获取响应。这是我的代码:

// Sending XHR request
var url = 'https://maps.googleapis.com/maps/api/place/textsearch/json?query=KPMG+Seattle&key=<<MY_KEY>>';

var xhr = createCORSRequest('GET', url);

xhr.setRequestHeader('Access-Control-Allow-Headers', '*');
xhr.setRequestHeader('Access-Control-Allow-Origin', '*');

xhr.send();

//**********************//

// Create the XHR object.
function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();

  if ("withCredentials" in xhr) {

    // XHR for Chrome/Firefox/Opera/Safari.
    xhr.open(method, url, true);

  } 
  else if (typeof XDomainRequest != "undefined") {

    // XDomainRequest for IE.
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } 
  else {
    // CORS not supported.
    xhr = null;
  }
  return xhr;
}

我在浏览器中运行此本地HTML文件,并收到CORS错误:

No 'Access-Control-Allow-Origin' header is present on the requested resource. 
Origin 'null' is therefore not allowed access. The response had HTTP status code 405.

我想知道问题是什么(我添加了Access-Control-Allow-Origin来请求标头)?
根据Google Tutorial,这应该足以提出要求吗?

请帮助指出我做错的地方......谢谢!

1 个答案:

答案 0 :(得分:0)

请参阅此帖子XMLHttpRequest Origin null is not allowed

如果您从本地文件运行,基本上有一个安全功能需要禁用以允许不同来源的XHR。

请参阅帖子中的第一个答案。