web-dev-qa-db-ja.com

HTTPからHTTPSへのクロスドメインリクエストはすぐに中止されます

HTTPページからHTTPSサービスへのクロスドメインWebサービス呼び出しを行おうとしています。

サーバーに適切なCORSヘッダーを設定しました(HTTP-HTTPおよびHTTPS-HTTPSで機能します)。

リクエストをJSONpに変更すると、機能します

私が見ているのはChromeそしてFirefoxはHTTPSリクエストが送信されていない、すぐに中止されている、サーバーはリクエストを認識しません。

プリフライトOPTIONSリクエストが中止された(そしてサーバーに到達しなかった)ことは注目に値します。

これが実際には不可能(HTTPからHTTPS)であり、さらに良いことを説明するソースが見つかりません:説明why。 HTTPSからHTTPは安全ではないことは理解できますが、それ以外の方法で問題ないはずです。 JSONpが機能するので、私にはばかげているように見えます(しかし、それは厄介です)。

メモ

また、withCredentialstrueに設定し、いくつかのカスタムヘッダーとカスタムContent-Typeを送信しています:application/json

IE <= 9のJSONpへのフォールバックを伴う通常のXMLHTTPRequestを使用しています

21
Halcyon

わかりました、わかりました。 HTTPSドメインに使用している証明書は、自己署名されており、未確認です。信頼できるサードパーティ機関のリストに追加すると、修正されました。

証明書は、IEを介してWindows7にインストールできます。これは私のために働いた: http://productforums.google.com/forum/#!topic/chrome/bds-Ao9LigA%5B1-25%5D 投稿者zacharysyoung 2/11/09 IE(9)を管理者として実行していることを確認してください。そうしないと、正しくインストールされたと表示されていても、インストールは失敗します。

  1. Internet Explorer(IE)を開き、自己署名証明書をホストしているサイトに移動します。
  2. IEは、「このWebサイトのセキュリティ証明書に問題があります」という警告ページを表示する必要があります。
  3. [このWebサイトに進む(非推奨)]リンクをクリックします。
  4. ページが読み込まれたら、アドレスバーの右側を見てください。 「証明書エラー」というラベルの付いた赤/ピンクのボタンが表示されます。そのボタンをクリックします。
  5. 「信頼できない証明書」というタイトルのポップアップが表示されます。ポップアップの下部にある[証明書の表示]リンクをクリックします。
  6. 「証明書」というタイトルの別のポップアップが表示されます。 [証明書のインストール...]ボタンをクリックします。
  7. 「証明書のインポートウィザード」が開始されます。 [次へ]ボタンをクリックします。
  8. ** XPの場合:a。 [証明書を自動的に選択する...]オプションを選択したままにして、[次へ]ボタンをクリックします。 ** Vistaの場合:a。 [すべての証明書を次のストアに配置する]オプションを選択し、[参照]ボタンをクリックします。 b。 [物理ストアを表示する]チェックボックスをクリックします。 c。 [サードパーティのルート証明機関]フォルダを展開し、[ローカルコンピュータ]を選択します。 [OK]ボタンをクリックします。 d。 [次へ]ボタンをクリックします。
  9. これにより、[証明書のインポートウィザードの完了]ダイアログが表示されます。 [完了]ボタンをクリックします。
  10. 「セキュリティ警告」ポップアップが表示されます。警告は、証明書のオリジンを実際に検証できないことを通知しています。証明書の出所を知っておく必要があります。その場合は、[はい]ボタンをクリックして証明書をインストールします。
  11. 「インポートが成功しました」という最後のポップアップが表示されます。 [OK]ボタンをクリックします。
  12. 再起動/開くChromeそして問題のサイトに移動します。セキュリティ警告ページが表示されないようにしないでください

それとは別に、Chromeのバグを発見したかもしれないと思います。参照: https://code.google.com/p/chromium/issues/detail?id=141839

11
Halcyon

easyXDM のような設定の方が簡単かもしれません。開始するのはかなり迅速であり、すべての下位互換性を提供します(IE6まで)。それはあなたが探している自家製のソリューションではないかもしれませんが、急いでクロスドメイン(両側にアクセスできる)が必要な場合は、それは法案に適合します。

いつでも独自のiframe(postMessage)インターフェースを作成できますが、なぜ車輪の再発明を行うのですか(異なるサブドメインを使用している場合は、document.domainを設定することを忘れないでください)。

1
SciSpear