101

私のサイトでは http および https プロトコルを使用しています。内容には影響しません。私のサイトでは jQuery ajax 呼び出しを使用しており、ページの一部の領域も埋めています。

ここで、すべての ajax 呼び出しを https 経由で行いたいと考えています。(理由を聞かないでください :)) https プロトコルを使用するページにいるとき、ajax リクエストが機能しています。http プロトコルを使用するページを表示すると、javascript エラーが発生します: 制限付き URI へのアクセスが拒否されました

私はこれがクロスドメインの問題であることを知っており (実際にはクロスプロトコルの問題です)、現在のページと同じプロトコルを ajax 呼び出しで使用する必要があることも知っています。

それでも、すべての ajax 呼び出しを https にして、http 経由で提供されたページで呼び出す必要があります。これを達成するための回避策はありますか (json/proxy ソリューションですか?)、それとも単純に不可能ですか?

4

6 に答える 6

58

サーバーからAccess-Control-Allow-Originヘッダーを追加します

Access-Control-Allow-Origin: https://www.mysite.com

http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing

于 2011-05-10T17:04:44.807 に答える
11

JSONP を試してください。

ほとんどの JS ライブラリでは、他の AJAX 呼び出しと同じくらい簡単に実行できますが、内部的には iframe を使用してクエリを実行します。

ペイロードに JSON を使用していない場合は、iframe に独自のメカニズムを適用する必要があります。

個人的には、http://ページからhttps://ページにリダイレクトするだけです

于 2009-07-09T19:58:00.070 に答える
9

http://example.com/はhttps://example.com/とは異なる VirtualHost に解決される可能性があるため(Host ヘッダーが送信されないため、その IP のデフォルトに応答します)、この 2 つは別のものとして扱われます。したがって、クロスドメイン JS 制限の対象となります。

JSON コールバックを使用すると、これを回避できる場合があります。

于 2009-07-09T19:24:51.353 に答える
4

オープンソースの Forge プロジェクトをチェックしてください。JavaScript TLS 実装と、実際のクロスドメイン リクエストを処理するためのいくつかの Flash を提供します。

http://github.com/digitalbazaar/forge/blob/master/README

つまり、Forge を使用すると、http 経由でロードされた Web ページから https サイトへの XmlHttpRequests を作成できます。クロスドメイン リクエストを有効にするには、サーバー経由で Flash クロスドメイン ポリシー ファイルを提供する必要があります。README の最後にあるブログ投稿をチェックして、それがどのように機能するかについてのより詳細な説明を入手してください。

ただし、Forge は 2 つの異なる https ドメイン間のリクエストに適していることに注意してください。その理由は、MiTM 攻撃の可能性があるためです。安全でないサイトから JavaScript と Flash を読み込むと、侵害される可能性があります。最も安全な使用法は、安全なサイトからロードし、それを使用して他のサイト (安全かどうかに関係なく) にアクセスすることです。

于 2010-07-22T20:11:05.887 に答える
2

https ページを iframe に読み込んで、すべての ajax リクエストをフレームの内外にブリッジ経由でルーティングしようとすることができます。 . それ以外の場合は、リクエストを再ルーティングするためのローカル http プロキシ (クロスドメイン呼び出しなど) が受け入れられるソリューションになります。

于 2009-07-09T19:22:09.910 に答える
2

これが私がすることです:

投稿したいデータを含む非表示の iFrame を生成します。その iFrame を引き続き制御するため、同じオリジンは適用されません。次に、その iFrame のフォームを ssl ページに送信します。その後、ssl ページは非 SSL ページにリダイレクトされ、ステータス メッセージが表示されます。iFrame にアクセスできます。

于 2011-09-12T13:51:57.110 に答える