«301 переехал», Google API с Opera - PullRequest
0 голосов
/ 01 марта 2012

В моем веб-приложении я делаю CURL-вызов Google (неофициальный) API погоды по адресу:

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.

Большое спасибо.

1 Ответ

0 голосов
/ 02 марта 2012

Обновление 2012-06-20: протестировано с Opera 12, и Google, похоже, исправил проблему с прослушиванием.

Я не думаю, что вы можете это исправить.Было бы интересно узнать, почему 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 User agent.

→ 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 User Agent

→ 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 в адресную строку, и появится строка агента пользователя.

...