ブラウザのアドレスバーの値は JavaScript で書き換えることができる

Yossy
2023-11-16
2023-11-16

ということで、タイトルのようなことができることを知らなかったので、混乱したときのお話。

ある URL が表示されないという相談があり、その URL の調査を始めたところ、

(1) Apache のログには、該当URLのアクセスに 404 が記録されてる。(そのURLへのアクセスはあるが、200 の記録が見当たらず、いままで、正常に表示されたことが無いように見える)
(2) URLに応答するファイルもない
(3) 実際、 URL にアクセスしても、404 になる

あれ、なんで、いままで表示されてたの?URL間違ってない?と混乱してたら、症状が改善されたとの連絡。

むむむ?何故?(混乱)

詳しく調べてみたところ、以下のようになってました。

(1) ブラウザのアドレスバーに表示されている URL が、JavaScript で書き換えられていた
(2) 書き換えられた後の URL 対しては、リダイレクトのように Apache への通信が発生しない
(3) なので、実際に通信が発生していたのは、書き換えられる前の URL
(4) ページが表示されなくなってたのは、外部のサービスが提供するWEB-API 経由でデータを読み込んで表示していたが、そのWEB-API のサーバーがダウンしていたためデータが取得できなくなっていたため表示できなくなっていた。

ということで、表示が復旧したのは、外部サービスが復旧したからということですね。

ちなみに、実際に URL を書き換える JavaScript 、

例えば、http://localhost/sample.html に以下の内容を書いておくと、

```
<script>
history.pushState(null, null, '/new_url');
</scipt>
```

http://localhost/sample.html にアクセスすると、
ブラウザのアドレスバーが  http://localhost/nre_url に書き換わります。

今後、同様の事例があったとき、気づけるかなぁ?