web-dev-qa-db-ja.com

jQueryを使用してAJAX HTTPS GETリクエストを作成する方法

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

20
FearlessFuture

問題を修正しました。 Djangoサイトの設定方法により、AJAXリクエストでリソースに末尾のスラッシュを追加する必要がありました。末尾なしでスラッシュDjango=は、HTTPS要求の代わりにHTTP要求を使用して、末尾のスラッシュが付いたURLにリダイレクトになります。

つまり、$.get("/resource")$.get("/resource/")に置き換えました。

ありがとうございました。あなたのすべての助けに本当に感謝しています。

46
FearlessFuture

表示中のページがhttpsページで、.getがアクセスしようとしているページがhttpである場合、同じOriginのために機能しません。ただし、.getで手渡しする代わりに、ajaxを書き出すこともできます。

$.ajax({
    type: "GET", 
    url: "https://someurl"
});

私は公平であると思いますが、それはまだ本当のjavascriptの不足です

9
mituw16

データ型を「jsonp」に設定してみてください。これは、以前はクロスオリジンリクエストで役に立ちました。

    $.ajax({
            url: "//www.site.com/resource"
            dataType: "jsonp",
            success: function(data) {
                $(".demo-card").html(data);
            }
    });
3
alphapilgrim

指定されたプロトコルを使用して、.htaccessファイルでRewriteRuleを使用するだけです。次に例を示します。

RewriteCond %{REQUEST_URI} .+[^/]$
RewriteRule ^(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L,QSA]
0
Alex S