私はこの問題を抱えています。外部の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リダイレクトの問題である可能性がありますか?
A 混合コンテンツエラー が発生するのは:
https
)をロードしようとしました(http
)提供またはその逆
http
)を読み込もうとしました[〜#〜] ssl [〜#〜](https
)提供エラーメッセージは、呼び出しページが安全でないモードでロードされたことを警告しています
これを明示的に説明していませんが、エラーにより、ページは配信されていません[〜#〜] ssl [〜#〜]。保護されたリソースをロードしようとすると、保護されたリソースと安全でないという混合モード問題になります。
可能であれば、同じ方法で参照ファイルを提供しようとします
[〜#〜] ssl [〜#〜](https
)でメインページを提供できます
http
で部分ページをリクエストできます
$( '#idtest')。load( " http://example.com/index.html ")
または
特定のリソースについて:
ロードしてみました:
そして
https://example.com/index.html
結果は同じでした。私はメッセージのある簡単なページを取得しました:
このドメインは、ドキュメント内の例示的な例に使用するために確立されています。このドメインは、事前の調整や許可を得ることなく、例で使用できます。
Originドメインのクロスの問題だと思います。
jqueryの$ .load関数はajaxを使用してURLをロードするため、ターゲットURLがCORSヘッダーを実装していない場合、クロスドメイン呼び出しを実行できません。
あなたの例では、サーバーexample.comはヘッダーを返す必要があります
Access-Control-Allow-Origin: *
*を、AJAXによってコンテンツをロードするページのドメインに置き換えることもできます。
CORSの使用方法に関する優れたブログ投稿: http://www.html5rocks.com/en/tutorials/cors/
私は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
を生成します