2017-10-23 11 views
0

WKWebViewを使用して小さなWebブラウザアプリケーションを開発しています。ユーザーがURLを入力すると、関連するWebサーバーにSSLがあるかどうかを確認してから、https://にリダイレクトします。WebサーバーにSSLがあるかどうかを確認する方法

ユーザーの例として、http://facebook.comと入力します。 FacebookにはSSLがあるので、ユーザーをhttps://facebook.com

にリダイレクトしたいと思います。

編集:My fault。それはウェブサイト自体によって行われます。私はいくつかのものを誤解した。

+0

あなたは現実の世界での使用のためにゼロから自分自身を書いている場合は、あまりにもHSTSになっているはずです。 https://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security これは単なる家事の質問であれば、どのように/何/基本的なHTTP(あらゆる種類の)要求をWebView 。 –

+0

@JonAdamsはいこれは実際の世界での使用です。情報のおかげで。私はこの種のものには新しいです。それが理由です。これはインターネットから自分のアプリケーションに画像をダウンロードするだけです。それは小さな種類のWebブラウザです。クロムアプリケーションでは、http://someweb.tldを置くと、サーバーにSSLがある場合、ユーザーをhttps://someweb.ltdにリダイレクトします。私はその動作を実装する必要があります。もっと具体的にする必要がある場合は教えてください。友達を助けてくれてありがとう。 – GMHSJ

+0

私はそれをリダイレクトするべきではないと思います。ユーザーがHTTP経由でWebサイトを取得する理由があります。また、ウェブサイトがHTTPS上のトラフィックをすべて必要とする場合は、そのリダイレクトを行うことができます。 – ntoonio

答えて

2

多くの詳細や制限事項が記載されていないため、以下のオプションでニーズに最も適したものがわかります。

クライアント側の単純なアプローチ

  • ストリップ離れプロトコルURLからHTTPおよび正を受信する
  • が新たに形成されたURL
  • を使用してHEAD呼び出しを行うHTTPSことによってそれを置き換えますレスポンスコード(2XX)を使用すると、HTTPSが利用可能であると推測し、自分自身をリダイレクトすることができます。

このソリューションは、 HTTPSの可用性を「推測」するための最初の呼び出しです。肯定的な結果が得られたら、別の電話をかけて文書を入手する必要があります。

予測アプローチは

は、ウェブサイトがHTTPSを持っていることを予測し、それをすぐに要求します。ページが戻らない場合は、HTTPでもう一度試してください。もちろん、両方のリクエストの結果が確実になるまで、ユーザーに何も表示しないようにしてください。このソリューションと前のソリューションを混同しないでください。このソリューションは、直前のWebサイトが最初に「確認」されるWebサイトをすぐに「ロード」しようとします。

は、あなたが最初からブラウザを開発しているので、彼らはすべての

、両方のページを取得する可能性を検討GET。 HTTPとHTTPSの両方のURLを同時に取得します。 HTTPSに対して肯定的な応答を受け取ったら、それを表示します。それ以外の場合は、HTTP応答のみを表示します(良いか悪いか)。

現代のブラウザ戦略

サーバが常に提供されたURLを使用して決定しましょう。そうすることで、HTTPが許可されていない場合、サーバーはリダイレクトステータスコード(3xx)で応答し、応答ヘッダーに新しい宛先を提供する必要があります。このアプローチはクライアントロジックを簡素化しますが、サーバーがリダイレクトの詳細を送信することを期待します。すべてのウェブサイトがこのケースを処理するわけではないことに注意してください。

リクエスト例http://www.gmail.comから

Request URL:http://www.gmail.com/ 
Request Method:GET 

レスポンスヘッダは

Status Code:307 Internal Redirect 
Referrer Policy:no-referrer-when-downgrade 
Location:https://www.gmail.com/ 
Non-Authoritative-Reason:HSTS 
+0

それは私のせいでした。私はそれがウェブサイト自体によって行われることを知らなかった。私は事を誤解した。友達を助けてくれてありがとう。 – GMHSJ

関連する問題