0

一部のブラウザであいまい検索リクエストが失敗し始めたという奇妙な問題に遭遇しました。

ここでテストページから検索を実行すると機能します。このリクエストをネットワーク タブで表示し、CURL としてコピーすると、次のようになります。

curl 'https://atlas.microsoft.com/search/fuzzy/json?api-version=1.0&query=New%20York&radius=100000&view=Auto&subscription-key=tTk1JVEaeNvDkxxnxHm9cYaCvqlOq1u-fXTvyXn2XkA' \
  -H 'authority: atlas.microsoft.com' \
  -H 'dnt: 1' \
  -H 'accept-language: en-US' \
  -H 'content-type: application/json; charset=utf-8' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36' \
  -H 'ms-am-request-origin: ServiceModule' \
  -H 'map-agent: ServiceModule/2.0.5 (Web)' \
  -H 'accept: */*' \
  -H 'origin: https://azuremapscodesamples.azurewebsites.net' \
  -H 'sec-fetch-site: cross-site' \
  -H 'sec-fetch-mode: cors' \
  -H 'sec-fetch-dest: empty' \
  -H 'referer: https://azuremapscodesamples.azurewebsites.net/Services%20Module/Fuzzy%20Search%20using%20Services%20Module.html' \
  --compressed

検索リクエストを右クリックして「新しいタブで開く」をクリックすると、400/Bad Request で失敗します。このリクエストを CURL としてコピーすると、次のようになります。

curl 'https://atlas.microsoft.com/search/fuzzy/json?api-version=1.0&query=New%20York&radius=100000&view=Auto&subscription-key=tTk1JVEaeNvDkxxnxHm9cYaCvqlOq1u-fXTvyXn2XkA' \
  -H 'authority: atlas.microsoft.com' \
  -H 'cache-control: max-age=0' \
  -H 'dnt: 1' \
  -H 'upgrade-insecure-requests: 1' \
  -H 'user-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36' \
  -H 'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' \
  -H 'sec-fetch-site: none' \
  -H 'sec-fetch-mode: navigate' \
  -H 'sec-fetch-user: ?1' \
  -H 'sec-fetch-dest: document' \
  -H 'accept-language: en,nl;q=0.9,en-GB;q=0.8' \
  --compressed

これは失敗します。新しいタブのGETリクエストで開いたときにChromeがデフォルトとして追加したように見えるaccept-languageパラメーター 'en、nl;q=0.9、en-GB;q=0.8'に問題を絞り込みました. この値を「en-US」に置き換えると、リクエストが再び機能します。

これを再現しました: Ubuntu 18.04.4 LTS、Chrome バージョン 81.0.4044.129 (公式ビルド) (64 ビット) Windows バージョン 10.0.18362 ビルド 18362、Chrome バージョン 81.0.4044.138 (公式ビルド) (64 ビット) およびまた、お客様から Edge と Chrome での報告もありました。

したがって、accept-language のこの既定値が有効であると仮定すると、それを解析する Azure API にバグがあるようです。

この問題の回避策は、chrome://settings/?search=language に 1 つの言語のみを設定することです。

4

1 に答える 1