0

在我的网络应用程序中,我正在对 Google 的(非官方)天气 API 进行 CURL 调用:

http://www.google.com/ig/api?weather=,,, ...

除了在 Opera 中访问所涉及的页面时,这在所有情况下都可以正常工作。在 Opera 中访问时,我在 xml 响应中得到以下内容,而不是天气:

301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/m/ig">here</A>.

我怎样才能解决这个问题?我在网上看到一些建议清除缓存是一种解决方案,但这对我不起作用。注意我特别关心 Opera Mini。

非常感谢。

4

1 回答 1

0

2012-06-20 更新:在 Opera 12 上进行了测试,谷歌已经修复了它看起来的嗅探问题。

我不认为你可以修复它。知道为什么 Google 会进行服务器端用户代理嗅探并将 Opera 重定向到另一个 URI 会很有趣。您能否粘贴完整的天气 URI,以便我们自己在 Opera 上进行测试?如果做一个你给 Opera 我得到的

<xml_api_reply version="1">
<weather module_id="0" tab_id="0" mobile_row="0" mobile_zipped="1" row="0" section="0">
<problem_cause data=""/>
</weather>
</xml_api_reply>

我也没有得到重定向,但我想这是因为 URI 不是您使用的那个。

% curl -sI "http://www.google.com/ig/api?weather=,,,"
HTTP/1.1 200 OK
Content-Type: text/xml; charset=ISO-8859-1
Date: Fri, 02 Mar 2012 12:04:44 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Set-Cookie: PREF=ID=fe13590e95ceb98e:TM=1330689884:LM=1330689884:S=h1eocRzhNcZ_Kwoa; expires=Sun, 02-Mar-2014 12:04:44 GMT; path=/; domain=.google.com
X-Content-Type-Options: nosniff
Server: igfe
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked

更多细节会有所帮助,我将在此处完成。

更新 2012-03-12首先我尝试了一个简单的卷曲。

→ curl -sI "http://www.google.com/ig/api?weather=,,,40735500,-73986500"

HTTP/1.1 200 OK
Content-Type: text/xml; charset=ISO-8859-1
Date: Mon, 12 Mar 2012 13:16:43 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Set-Cookie: PREF=ID=9bc71bbf2edb7ebb:TM=1331558203:LM=1331558203:S=K5Ew69E5IsYhA0s8; expires=Wed, 12-Mar-2014 13:16:43 GMT; path=/; domain=.google.com
X-Content-Type-Options: nosniff
Server: igfe
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked

然后使用 Opera 用户代理。

→ curl -sI -A "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.3; U; fr) Presto/2.10.229 Version/11.61" "http://www.google.com/ig/api?weather=,,,40735500,-73986500"

HTTP/1.1 200 OK
Content-Type: text/xml; charset=UTF-8
Date: Mon, 12 Mar 2012 13:17:47 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Set-Cookie: PREF=ID=54cc62619394059e:TM=1331558267:LM=1331558267:S=JRCO-WNJMUNMMHsO; expires=Wed, 12-Mar-2014 13:17:47 GMT; path=/; domain=.google.com
X-Content-Type-Options: nosniff
Server: igfe
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked

最后是 Firefox 用户代理

→ curl -sI -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:9.0) Gecko/20100101 Firefox/9.0" "http://www.google.com/ig/api?weather=,,,40735500,-73986500"

HTTP/1.1 200 OK
Content-Type: text/xml; charset=UTF-8
Date: Mon, 12 Mar 2012 13:20:09 GMT
Pragma: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Cache-Control: no-cache, no-store, must-revalidate
Set-Cookie: PREF=ID=ab709995945767a8:TM=1331558409:LM=1331558409:S=bom-8pa-x9gGY5Sb; expires=Wed, 12-Mar-2014 13:20:09 GMT; path=/; domain=.google.com
X-Content-Type-Options: nosniff
Server: igfe
X-XSS-Protection: 1; mode=block
Transfer-Encoding: chunked

在所有情况下都没有X-Content-Type-Options: nosniff,也没有重定向。您使用的用户代理是什么。您可以在地址栏中键入 about:opera,然后会出现用户代理字符串。

于 2012-03-02T12:05:53.997 回答