質問: ### 一番知りたいこと 下記リンク先に表示されている(元の)画像ファイル形式を知りたい 画像リンク ### 試したこと ダウンロードしたファイル拡張子を、取り敢えずjpgへ変更してみたら画像表示されました(が最適かどうかは分かりません)。 ### その他疑問 (できれば知りたいこと) * 拡張子「.8a3nFK」なのに、どうして画像表示されるのですか? * 「storage.googleapis.com」の記述がありますが、Google APIへリクエストを投げ、返ってきた画像データを表示しているのですか? もしそうだとしても拡張子が「.8a3nFK」な理由が分かりません。動的に処理しているから?
回答: 現代のブラウザは、拡張子によってファイルのフォーマット(メディア種別)を判別しません。 * Content-Type - MDN > > `Content-Type` エンティティヘッダーは、リソースのメディア種別を示すために使用します。 > > (中略) > > `Content-Type` ヘッダーはクライアントに返されたコンテンツが実際にはどのような種類のものであるかを伝えます。 > > > (今回の質問からは逸れますが、)ただし、続く説明に > > 場合によってはブラウザーは MIME を推定し、このヘッダーの値に従わないこともあります。 > > > とある通り、過去のブラウザでは拡張子によってメディア種別を判別することもありました。次のリンクで解説されています。 * IEのMIME Sniffing - てきとうなメモ ちなみに今回の`Content-Type`は`application/octet-stream`であり、これが``の`src`に指定されています。 従って具体的な画像フォーマットの判定が必要ですが、pngであるかどうかは、他の回答にある通り、 `0x89 50 4E 47 0D 0A 1A 0A` で始まっているかでチェックするようです。 * MIME Sniffing > 6.1. 画像型パタンとの照合 + 原文 質問文中のURLに含まれる文字列 ``` $2a$08$VyYesY.CJ10klUWIYBzSlu6MTgt72F69GE7d5xzZqKLBkl.8a3nFK ``` ですが、文字列パターンから見てbcryptハッシュ化の結果値と思われます。 * BCrypt(Blowfish暗号)について調べたので文書化してみました - Kamiya::Memo * bcrypt - Wikipedia つまり、 `.8a3nFK` は拡張子を意図した文字列というわけではないでしょう。