【问题标题】:CORS (Cross origin resource sharing) not supported by Fusion Tables?Fusion Tables 不支持 CORS(跨源资源共享)?
【发布时间】:2011-12-11 18:52:43
【问题描述】:

从 issue 554 上的 cmets 判断,我认为 Fusion Tables 支持 CORS 请求。尝试以下操作会出现跨站点错误(在 Chrome 中):

xhr = new XMLHttpRequest()
xhr.open("GET","http://www.google.com/fusiontables/api/query?sql=SELECT%20*%20FROM%201906375")
xhr.send()

错误是:Origin http://[domain] is not allowed by Access-Control-Allow-Origin.

以下示例运行良好(用于比较),一个简单的 PHP 页面,我在其中设置“CORS”标头并回显原始服务器,例如“hello example.com”:

xhr = new XMLHttpRequest()
xhr.open("GET","http://skipperkongen.dk/services/corstest/hellocors.php")
xhr.send()

我必须承认,我在网上找不到任何地方明确表示融合表支持 CORS,但我有点期待它(也从问题中的 cmets 判断)...

我做错了吗?

【问题讨论】:

  • 这是一个 curl 请求,显示响应中未返回 Access-Control-Allow-Origin 标头。但是我对 Fusion Tables 中 CORS 支持的状态一无所知: curl -H "Origin: foobar.com" -H "User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.202 Safari/535.1" "google.com/fusiontables/api/query?sql=SELECT%20*%20FROM%201906375" --verbose
  • 嗯,是的,这也是我的结论。我觉得这有点奇怪,将 Access-Control-Allow-Origin 标头粘贴在响应上会很容易,而且 IMO 会大大改进产品。
  • 顺便说一句,猜你看我的主页 :-) 用户代理的选择。好吧,很高兴有人读到它。

标签: javascript ajax web-services cors google-fusion-tables


【解决方案1】:

仅为(未记录且可能更改)JSONP 接口更新了标头:

http://www.google.com/fusiontables/api/query?sql=&jsonCallback=

【讨论】:

  • 对我来说,这似乎是一个奇怪的选择?由于 CORS 和 JSONP 都完成相同的事情,即跨站点 javascript Web 服务调用。 CORS 将在非 JSONP 接口 IMO 上具有价值。感谢您的回答:-)
猜你喜欢
  • 2013-01-12
  • 2016-03-03
  • 2014-01-18
  • 2014-10-08
  • 2014-03-20
  • 2018-05-04
  • 2013-01-18
  • 2011-06-10
相关资源
最近更新 更多