JQueryを使用してAJAX HTTPS GETリクエストを明示的に作成するにはどうすればよいですか?次のことをしようとしています。httpsページで、コード$.get("/resource")
、しかし、次のエラーが表示されます
XMLHttpRequest cannot load http://www.site.com/resource. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://www.site.com' is therefore not allowed access.
相対リソースがhttpsページからのものである場合、AJAX呼び出しがHTTPプロトコルを使用してページにアクセスしようとするのはなぜですか?デフォルトで$ .get(url)メソッドがこれを行う場合、 jQueryを使用して明示的なHTTPS GET要求を実行しますか? http://forum.jquery.com/topic/jquery-get-ajax-call-on-http-page-で同様の問題が発生した別の人to-https-on-same-domain は解決できませんでした。
jQueryバージョンは1.7.2
問題を修正しました。 Djangoサイトの設定方法により、AJAXリクエストでリソースに末尾のスラッシュを追加する必要がありました。末尾なしでスラッシュDjango=は、HTTPS要求の代わりにHTTP要求を使用して、末尾のスラッシュが付いたURLにリダイレクトになります。
つまり、$.get("/resource")
を$.get("/resource/")
に置き換えました。
ありがとうございました。あなたのすべての助けに本当に感謝しています。
表示中のページがhttpsページで、.getがアクセスしようとしているページがhttpである場合、同じOriginのために機能しません。ただし、.getで手渡しする代わりに、ajaxを書き出すこともできます。
$.ajax({
type: "GET",
url: "https://someurl"
});
私は公平であると思いますが、それはまだ本当のjavascriptの不足です
データ型を「jsonp」に設定してみてください。これは、以前はクロスオリジンリクエストで役に立ちました。
$.ajax({
url: "//www.site.com/resource"
dataType: "jsonp",
success: function(data) {
$(".demo-card").html(data);
}
});
指定されたプロトコルを使用して、.htaccessファイルでRewriteRuleを使用するだけです。次に例を示します。
RewriteCond %{REQUEST_URI} .+[^/]$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]