1

我可以使用跨域 XMHhttpRequest() 搜索 Google 吗?

var xhr = XMLHttpRequest();
xhr.open("GET", www.google.com/?q=what+you+want+to+search, true);
4

1 回答 1

1

试试看:

curl -H "Origin: http://domain.com" -X OPTIONS --head https://www.google.com/

这目前为您提供:

HTTP/1.1 405 Method Not Allowed
Content-Type: text/html; charset=UTF-8
Content-Length: 962
Date: Fri, 21 Jun 2013 17:58:45 GMT
Server: GFE/2.0

所以不,你不能,至少不能使用他们面向公众的网站。如果是这样的话,那里会有一个Access-Control-Allow-Origin: *,200 OK。这*是“任何域”的通配符。所以它要么必须是这样,要么必须与您的出身相匹配。

即使它确实返回了正确的标头,您也必须在浏览器中支持 CORS。您可以在此处查看浏览器兼容性。IE 8 和 9 仅支持 CORS through XDomainRequest,它有严格的限制(例如,没有 cookie 或自定义标头)。您可以在此处阅读有关访问控制标头的更多信息。

当 CORS 失败时,使用同源策略

不过有办法。Google REST API确实支持跨源请求:

curl -H "Origin: http://domain.com" -X GET --head "https://www.googleapis.com/customsearch/v1?"

这给了你:

HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: http://domain.com
Content-Type: application/json; charset=UTF-8
Access-Control-Expose-Headers: Content-Encoding,Content-Length,Content-Type,Server
Date: Fri, 21 Jun 2013 18:12:51 GMT
Expires: Fri, 21 Jun 2013 18:12:51 GMT
Cache-Control: private, max-age=0
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Server: GSE
Transfer-Encoding: chunked

注意Access-Control-Allow-Origin: http://domain.com.

所以假设你有一个 API 密钥,你可以,如果你使用 API。

于 2013-06-21T18:01:19.993 回答