駄文。

プログラマーの日常でつまずいたこと・気づいたことなどの記録です

safariは相対パス指定したページ遷移でhttp -> httpsとプロトコルを強制的に変更するっぽい

テストしていてつまづいた事例

以下のようなhtmlを表示していた場合、相対パスを指定したフォームを実行した場合の 遷移先は現在のURLのパスに単に fooを追加したものになると考えていた

<html>
<body>
  <form action="foo" method="post">
     <input type="password" name="password"></input>
    <button type = "submit>login</button>
  </form>
</body>
</html>

つまり現在のURLが http://localhost/だったら、http://localhost/fooに遷移すると。

これをsafariで実行すると(macsafari 16.5)だと、なんとご丁寧にプロトコルhttpsに 変換して https://localhost/fooに遷移してしまう(っぽい)

条件は以下の3つが揃っている時。

  • コンテンツにセキュアな情報を含む(パスワードフィールドは該当)

    chatGPTで調べていたらセキュアコンテンツを含む場合には変換されるケースがあるとの回答があったが 具体的なソースに行き当たらずなんとなく状況証拠的な部分です。

  • 遷移先のURLが相対パス(formのアクションもページ内のリンクも修正されていました)

  • 実行するブラウザがsafari

これをchromeで動作させても別にURLを変更することなるhttp://localhost/fooにアクセス してくれるのだが。

セキュリティ上、httpで流すやつが悪いわけだが、開発時にはわかってやっている 部分もあるのでなんとも余計なお世話な感じである。

ただ、この情報は裏が取れているわけではなく状況証拠で推測されたものなので 全く別の事実がある可能性が否定できないので取り扱いには注意されたい。

ただ、同じようなことで困った時に原因の一つとしてありそうだというものを残しておくために 書いておくものでした。