http://www.example.com
にリクエストすると、webRequest.onBeforeRequestListenerにはhttp://www.example.com/
が表示されるのはなぜですか?例えばwebextension:ブラウザが要求されたURLに末尾にスラッシュを追加するのはなぜですか?
:
chrome.webRequest.onBeforeRequest.addListener(
details => console.log('Sending request to', details.url),
{ urls: ['<all_urls>'] });
fetch('http://www.example.com');
ネットワーク要求モニターに示されるリクエストURLと一致している
Sending request to http://www.example.com/
を印刷します。私はそれを取るとcurlコマンドに変換した場合、要求は次のようになります。
curl 'http://www.example.com/' -H 'Accept: */*' -H 'Connection: keep-alive'
-H 'Accept-Encoding: gzip, deflate' -H 'Accept-Language: en-US,en;q=0.9'
-H 'User-Agent: ...' --compressed
ので、出かける元の要求がhttp://www.example.com
ためhttp://www.example.com/
ないためです。その決定は、サーバーではなく、ブラウザーで行われていなければなりません。
fetch
の代わりにXMLHttpRequest
を使用すると、同じ現象が発生します。私の例では、Chromeを使用しましたが、Firefoxでは同じです。
質問:
- なぜブラウザが自動的にそれを変更しますか?他のURLでも発生します。私の理解から、後続のスラッシュを追加することはしばしばうまくいくが、一般に、それは急激な変化である。
- 特定のURLへの現在のリクエストについて、リスナーの
onBeforeRequest
をフィルタリングしたい場合、どのように信頼性の高いURLに一致させることができますか?たとえば、URLが同一かどうかを確認するだけでは失敗します。 - ブラウザに書き換えURLのルールがありますか?
スラッシュに関するその他の回答:https://stackoverflow.com/questions/2581411/do-web-browsers-always-send-a-trailing-slash-after-a-domain-name、https:///webmasters.stackexchange.com/questions/35643/is-trailing-slash-automagically-added-on-click-of-home-page-url-in-browser – PredatorIWD
@PredatorIWDリンクをありがとう。それは私の答えに書いたものを確認するようです。 –