各種リダイレクトに関するブラウザの挙動の違い [その他]
サーバー側のリダイレクト要請には,302 Found,303 See Other,307 Temporary Redirectの3種があります。
302 Foundは元々302 Moved Temporaryで,メソッドを変えてはいけないはずだったのに,UAが守らないから303と307が出来たそうです (ref: [Studying HTTP] HTTP Status Code)。 というわけで,各種ブラウザで挙動を確認してみました。 ベースとなる環境は,Windows Vista 32bitになります。 また,名称はWindowsのタスクバーへの表示を使っています (Safari, Lynx除く)。
- Internet Explorer 8.0.6001.18813CO
- User-Agent
- Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GETに対してはGETで,POSTに対してはPOSTでリダイレクトした。その間,ユーザーへの問い合わせは存在しなかった。POSTの元のフォーム変数は保持された。
- Internet Explorer 8.0.6001.18813CO (互換モード)
- User-Agent
- Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 1.1.4322; InfoPath.2; .NET CLR 3.5.21022; .NET CLR 3.5.30729; .NET CLR 3.0.30729; OfficeLiveConnector.1.4; OfficeLivePatch.1.3)
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GETに対してはGETで,POSTに対してはPOSTでリダイレクトした。その間,ユーザーへの問い合わせは存在しなかった。POSTの元のフォーム変数は保持された。
- Mozilla Firefox 3.5.3
- User-Agent
- Mozilla/5.0 (Windows; U; Windows NT 6.0; ja; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GETに対してはGETで,POSTに対してはPOSTでリダイレクトした。POST時のフォーム変数を再送信するかどうか問い合わせがあった。
- Google Chrome 3.0.195.21
- User-Agent
- Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.21 Safari/532.0
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GETに対してはGETで,POSTに対してはPOSTでリダイレクトした。POST時のフォーム変数を再送信するかどうか問い合わせがあった。
- Opera Internet Browser 10.00 Build 1750
- User-Agent
- Opera/9.80 (Windows NT 6.0; U; ja) Presto/2.2.15 Version/10.00
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GETに対してはGETで,POSTに対しては再送信するかの問い合わせがあり,再送信する場合はPOSTで,しない場合はGETでリダイレクトし,キャンセルした場合は元のページのままであった。
- Safari 4.0.3
- User-Agent
- Mozilla/5.0 (Windows; U; Windows NT 6.0; ja-JP) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9.1
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GET/POSTに対して,どちらもGETでリダイレクトした。
- Lynx 2.8.6 日本語版
- User-Agent
- Lynx/2.8.6rel.4TH libwww-FM/2.14FM SSL-MM/1.4.1 GNUTLS/1.7.8
- 結果
- 302 Found
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 303 See Other
- GET/POSTに対して,どちらもGETでリダイレクトした。
- 307 Temporary Redirect
- GET/POSTに対して,どちらもGETでリダイレクトした。
IE8の307の挙動は,localhostでやっているからかもしれません。 それはともかく,Firefox, Chrome, Operaの307に対する挙動はよいでしょう。IEもPOSTで転送するのでまぁ許せます。 ただ,Safariはどうよ,と思いますが……。
タグ:Internet
re: リンクいろいろ [その他]
元ネタ:リンクいろいろ
Windows限定かつ曖昧な知識で。
- ハードリンク
- ファイルの実体に複数の名前を付ける為の方法。片方のファイルを開いて修正すると,もう一方も変更される。ディレクトリには作れない
- Windows NT 4.0時代はBackupWrite APIを使って頑張って書いていたが,Windows 2000でCreateHradLink APIが追加され,気軽に作れるようになった
- Windows XP以降ではfsutilでコマンドプロンプトから作成可能。Vistaではmklinkコマンドでさらに簡単になった
- リパースポイント (再解析ポイント)
- パスの解析の途中に別の処理を割り込ませる方法。シンボリックリンク~マウントポイントの実装に使われている。
- シンボリックリンク/ジャンクション/マウントポイント
- 他のファイルやディレクトリ,ボリューム名を内部 (BACKUP_REPARSE_DATA) に持っていて,それぞれへのアクセスを置き換える物。 早い話が,ファイルシステムネイティブなショートカットファイル/ディレクトリ。
- 違いは,
- ジャンクション/マウントポイント
- 実は一緒の物。絶対パスで保持していて,Windows 2000以降で利用可能
- 作成するにはDeviceIoControl APIを使う
- Windows Vistaのmklinkまで,コマンドプロンプトから作成する方法はなかった
- 対象は,同一PCのみ
- ネットワーク越しでジャンクションにアクセスした場合,サーバー側で再解析が起こる
- ファイルへのジャンクションは,不可能ではない物の,BackupWrite API使うとか,パッチ当てるとか,裏技でしかできない
- シンボリックリンク
- 絶対パスまたは相対パスで保持していて,Windows Vistaで利用可能
- 作成するにはCreateSymbolicLink APIを使う
- mklinkを使って,コマンドプロンプトから作成可能
- 対象は,同一PCの他,ネットワーク越しのファイルへのリンクも可能
- ネットワーク越しでシンボリックリンクにアクセスした場合,クライアント側で再解析が起こるので,本来のリンク先にネットワーク越しではアクセスすることができない
- 管理者権限が必要
- subst
- リパースポイントと違い,ドライブにディレクトリを割り当てる方法。
こんなんでよいっすかね?>シャノンさん
タグ:Windows