2012-11-25 10 views
7

私のウェブサイトでかなり基本的なjQuery ajaxをやっています。jQuery ajaxはHTTPSリクエストを作成しません

はここに関連するコードです:

$(document).ready(function() { 
    $("#getdatabutton").click(function() { 
     $.ajax({ 
      url: "/jsontest/randomdata", 
      type: "get", 
      data: [{name:"ymax", value:$("#randomgraph").height()}, 
        {name:"count", value:$("#countinput").val()}, 
        {name:"t", value:Math.random()}],  
      success: function(response, textStatus, jqXHR) { 
       data = JSON.parse(response); 
       updateGraph(data); 
       $("#result").html(response); 

       if(data["error"] == "") { 
        $("#errorbox").html("None"); 
       } 
       else { 
        $("#errorbox").html(data["error"]); 
       } 
      }, 
      error: function(jqXHR, textStatus, errorThrown) { 
       $("#errorbox").html(textStatus + " " + errorThrown); 
      } 
     }); 
    }); 
}); 

ページがHTTPSでロードされますが、のXMLHttpRequestsはHTTPを介して外出するように見えます。

URLを絶対URL(https://larsendt.com/jsontest/randomdata)に変更しようとしましたが、でもまだが私のサイトのHTTPバージョンにリクエストを送信します。

当然のことながら、要求が別のプロトコルになるため、ajax呼び出しは失敗します(クロスドメインとそのすべて)。私は考えることができる唯一の他の関連情報は、私はnginxのは301がhttps://larsendt.comhttp://larsendt.comからリダイレクトんたんだけど、私はそれがする方法を見ていないということです

The page at https://larsendt.com/jsontest/ displayed insecure content from http://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.08111811126582325. 

:クロームによって報告されているように

何かを壊す(私はそれがかなり標準的な練習だと思う)。

ライブデモをご希望の場合は、壊れたバージョンはまだhttps://larsendt.com/jsontestです。

とにかく、ありがとうございます。

+0

あなたの投稿のタイトルを変更して、このクエリの人々がこのページに上陸しないようにしてください。 – brayne

答えて

13

は、サーバーが301永久リダイレクトが起きても

url: "/jsontest/randomdata/" // there was a missing trailing/

// i.e. https://larsendt.com/jsontest/randomdata?ymax=500&count=32&t=0.9604179110508643 
// was going to https://larsendt.com/jsontest/randomdata/?ymax=500&count=32&t=0.9604179110508643 
+0

ああ!それがそれでした。どうもありがとう! –

+0

良い点、いいね。これはおそらくサーバーでも修正される可能性があります。 IIRC、Apache(そして多分他のもの)では、行方不明のスラッシュを処理するためのいくつかの異なるアプローチがあります。私は専門家ではなく、一度それを読んだことがあります(約10年前)! –

+0

これは私の問題を解決しました。非常に良い点。 –

1

をリダイレクトする必要がありませんので、URLを固定してください。確認するにはFiddlerを実行し、結果の列を見てください。通常200コードですが、私は301コードを発見しました。

HTTPS jqueryのAJAX呼び出しが混在したコンテンツのエラーを引き起こし、HTTPにリダイレクトされました。

関連する問題