質問: 下記の記事で紹介されている 翻訳: WebAPI 設計のベストプラクティス > > いつ何時も、SSL 通信を使おう > > > の項目で、 > > ひとつ気をつけたいのは、API の URL に非 SSL でのアクセスがあるケースです。こうしたアクセスを、対応する SSL の API にリダイレクトしてはいけません。代わりにきちんとしたエラーを投げてください。不適切な設定が行われたクライアントが、暗号化されていないエンドポイントにリクエストを送信して、それが実際の暗号化されているエンドポイントへと暗黙的にリダイレクトされるなんてことは最も避けたい事態でしょう。 > > > という言及がありますが、暗黙的なリダイレクトが「最も避けたい事態」とまで言われているのなぜでしょうか? また、上記の中の「きちんとしたエラーを投げる」とは具体的にはどうすればよいのでしょうか? ・HTTPステータスコードに非SSL通信が許可されていないことを示すものがある? ・他のコードで代用?
回答: ブラウザであればHTTP/HTTPSの両方に対応していることを想定しても大問題にはなりませんが、APIをつなぐクライアントはもっと多様なので、HTTP接続したけれど**HTTPSで通信できない**という可能性も考えられます。 その場合に「強制リダイレクト」としてしまうと、APIクライアント側に伝わる情報は「SSL接続の失敗エラーだけ」、ということになってしまいます。 Google APIをHTTPで呼んだ場合、このようなレスポンスが返されるとのことです。