web-dev-qa-db-ja.com

jqueryロードhttps url

私はこの問題を抱えています。外部のWebサイトには、次のようなスクリプトがあります。

<div id="idtest"></div>
<script src="//example.com/widget.js" type="text/javascript"></script>

example.comはhttpsにあります(httpとhttpsの両方を許可します)。サーバーのスクリプトwidget.jsには、次のようなものがあります。

 $('#idtest').load("https://example.com/index.html")

次のエラーが表示されます:混合コンテンツ: 'thepage'のページはHTTPS経由でロードされましたが、安全でないXMLHttpRequestエンドポイント ' http://example.com/index.html 'を要求しました。このリクエストはブロックされました。コンテンツはHTTPS経由で提供する必要があります。

理解できません。なぜエラーが発生し、エンドポイントが「http」にあるのですか?ありがとう

編集

詳しくは:

もしwidget.jsで私はこれをします:

 $('#idtest').load("./index.html")

コンテンツが読み込まれ、サイトにスクリプトを読み込んだ場合、すべてが完全に機能します。

私が次のようなことをした場合:

 x = "https://example.com"
 $('#idtest').load(x + "/index.html")

または

 $('#idtest').load("https://example.com/index.html")

エラーが発生します(自分のサイトまたは外部サイトにスクリプトを配置した場合)。どうして?

編集2

詳細:

私のサイトはDjangoにあります

編集3

Firefoxでは、httpsおよびhttpでページをロードします。 Chromeでは機能しません。 URLを呼び出すと、Firefoxネットアナライザーでこの状況が発生します。

302 https://example.com/index.html 200 http://example.com/index.html [混合コンテンツ]

この状況(httpsからhttp)を理解しているのは何ですか? Djangoリダイレクトの問題である可能性がありますか?

7
RoverDar

A 混合コンテンツエラー が発生するのは:

  • 安全に提供されていないページに安全なコンテンツ[〜#〜] ssl [〜#〜]https)をロードしようとしました(http)提供

またはその逆

  • 安全に配信されるページに安全でないコンテンツ(http)を読み込もうとしました[〜#〜] ssl [〜#〜]https)提供

エラーメッセージは、呼び出しページが安全でないモードでロードされたことを警告しています

これを明示的に説明していませんが、エラーにより、ページは配信されていません[〜#〜] ssl [〜#〜]。保護されたリソースをロードしようとすると、保護されたリソースと安全でないという混合モード問題になります。


可能であれば、同じ方法で参照ファイルを提供しようとします

  • [〜#〜] ssl [〜#〜]https)でメインページを提供できます

  • httpで部分ページをリクエストできます

    $( '#idtest')。load( " http://example.com/index.html ")

または

  • 解決したように、プロトコルなしの部分ページをリクエストします。ロードされたファイルは、ページで使用されているプロトコルを使用してロードされます。

特定のリソースについて:

ロードしてみました:

http://example.com/index.html

そして

https://example.com/index.html

結果は同じでした。私はメッセージのある簡単なページを取得しました:


ドメインの例

このドメインは、ドキュメント内の例示的な例に使用するために確立されています。このドメインは、事前の調整や許可を得ることなく、例で使用できます。

詳細情報...

12
Dave Alperovich

Originドメインのクロスの問題だと思います。

jqueryの$ .load関数はajaxを使用してURLをロードするため、ターゲットURLがCORSヘッダーを実装していない場合、クロスドメイン呼び出しを実行できません。

あなたの例では、サーバーexample.comはヘッダーを返す必要があります

Access-Control-Allow-Origin: *

*を、AJAXによってコンテンツをロードするページのドメインに置き換えることもできます。

CORSの使用方法に関する優れたブログ投稿: http://www.html5rocks.com/en/tutorials/cors/

1
Julien Bachmann

私はRuby on Rails webpageでこの問題を抱えていましたが、https Webページで "_path"ヘルパーの代わりに "_url"ヘルパーを使用するのが誤りでした:

view:で間違っています:borrar_linea_factura_url(l)

ok:borrar_linea_factura_path(l)

以前の要約として:

"_url"ヘルパーは/controller/action/paramsを生成します

"_path"ヘルパーはhttps://controller/action/paramsを生成します

0
Albert Català