web-dev-qa-db-ja.com

JavaScriptクロスドメインコール:HTTPからHTTPSへの呼び出し

同じドメインの安全な(HTTPS)URLに非同期呼び出しを行う必要があります。

現在、ページは通常のHTTP(非セキュア)で動作しています。

つまり、これは同じドメイン内のURLを呼び出していますが、HTTPSを使用しています。

この呼び出しをHTTPSに切り替える前に、クロスドメインAJAX呼び出しを許可するサーバー側プロキシの実装を終了しましたが、HTTPとHTTPSも異なる発信元と見なされるため、同じ起点ポリシーに直面しています。したがって、このプロキシは使用できません。

概要:クロスドメイン、asnynchronousの実行方法POST要求?

さまざまなメモ:

  • JSONPを示唆する回答を受け入れることができませんでした。非同期呼び出しでは、POST動詞を使用する必要があります。
  • 最新バージョンのjQueryを使用しています。答えは、このライブラリ、またはこの問題を解決する他のものに基づいている可能性があります。
  • HTTPS経由でページ全体にアクセスすることは解決策ではありません。
  • サーバープラットフォームはMicrosoft .NET 4.0(ASP.NET 4.0)です。
  • [〜#〜] udpate [〜#〜]:CORSはオプションではありません。最新のブラウザでは、これに対する広範なサポートはありません。
18

まず、@ missingoと@PiTheNumberの両方の質問に+1を付けました。

長い時間を費やしてから、ページ全体をHTTPSに切り替えるという結論に達しました。理由は:

  • 最新のブラウザのほとんどはCORSをサポートしていますが、Internet Explorerの8番目のバージョンからは独自の実装(XDomainRequestオブジェクト)があり、一部のコンピューターでは無効になっている場合があります(インターネットセキュリティゾーンではクロスドメインリクエストがデフォルトで無効になっています)。

    • OperaはCORSをサポートしていません。 12番目のバージョンはこれをサポートしますが、ユーザーは最初にこの新しいバージョンを採用する必要があるため、これはオプションではありません。これは2日以内には行われません。

    • Webクライアントアプリケーションは別のドメインにあるRESTfulサービスレイヤーを要求する必要があるため、クロスドメインリクエストを行う必要があります。ありえない。

    • すべてをHTTPSに切り替えると、サービスレイヤープロキシアプローチが再び機能します(これは予想される動作です)。

とにかく感謝します。両方の答えがこの結論に到達するために私を大いに助けてくれたからです。

更新

@Samは、誰にとっても興味深いコメントを追加しました。 Internet Explorer 8および9でCORSを取得する方法についてです(#7を参照): http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations- and-workarounds.aspx

14

Access-Control-Allow-Origin を使用しています。ヘッダーを送信するだけで大​​丈夫です。

AJAX、サブドメイン、およびSSL も参照してください

9
PiTheNumber

HTTPSを介してページ全体へのアクセスを再検討するか、少なくともこれが現実的でないことを本当に確認する必要があります。

HTTP経由で初期ページとスクリプトをロードすることにより、ユーザーは、スクリプトが元々送信することを意図したものであり、第三者による操作(パスワードのキーロギングなど)を受けていないことを保証しません。つまり、SOPをバイパスするHTTPS要求は、HTTPSを介して最初に提供されたページからのHTTPS要求と同じセキュリティ保証を提供しません。

2
hugomg

誰もが見ていますか:

https://github.com/jpillora/xdomain

PostMessageとiframeを使用してcors要求を実現し、クロスブラウザーです(IEでXDomainRequestsを食いしばる必要はありません)。

おそらく、それはクロスプロトコルCORSリクエストを許可しますか?

1
Matt Newell