2012-03-14 12 views
9

jQuery.ajaxリクエストを作成するたびに、URLがHTTPプロトコルを使用しているときにうまく動作します。しかし、HTTPsサーバに同じリクエストを送信すると、ヘッダ[HTTP_X_REQUESTED_WITH: XMLHttpRequest]なしで送信されます。したがって、サーバーはこれがAJAX要求であることを知る方法がありません!HTTPSを使用しているときにjQuery.ajaxが適切なajaxヘッダーを送信しない

  • CrossDomain:true

設定メモbeforeSend

  • を使用してヘッダーを強制$アヤックス、$ .post、$に.get
  • を切り替える::そこ私が試した

    ドメイン間の問題ではなく、リクエストは有効で処理されますが、AJAXではありません。

    この問題は、現在のURLがhttpですが、要求されたURLが同じドメインにありますがHTTPSを使用している場合に発生します。 http://example.com/home は、この1つは助け

  • +5

    ** **ドメイン間の問題AFAIKです。 [SOP](http://en.wikipedia.org/wiki/Same_origin_policy)では、リクエストが同じプロトコルとポート(HTTP - > HTTPSと80 - > 443を使用しているところ)に存在する必要があります。 jQuery *は追加のHTTPヘッダーを無視してJSONPリクエストをバックグラウンドで作成しているようです(これ以上の情報はありません)。 – Matt

    +0

    あなたはHTTPサーバーにいるときに、HTTPSサーバーに正しくajaxリクエストを行うことを意味しますか? –

    +0

    @MikeGleasonjrCuthurier yest、これが当てはまります。 – mjalajel

    答えて

    3

    httpとhttpsの間で同じことをしても同じ問題が発生しました。
    私はこれを研究しており、クロスドメインの問題です。 JSONPを使ってJSONPを試してみてください。curlを実行するために使用しているサーバー側のページでhttpをhttps接続できるようにするためのヘッダーを設定する必要があります。これらは次のとおりです。

    header("Access-Control-Allow-Origin: your https url"); 
    header("Access-Control-Allow-Methods: POST, GET"); 
    header("Access-Control-Max-Age: 1728000"); 
    
    header("Access-Control-Allow-Headers: Content-Type, Connection, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); 
    header("Connection: close");  
    
    +0

    あなたの書式にもっと注意を払ってください。 –

    1
    $.ajax { 
        ... 
        ... 
        beforeSend : function(jqXHR, settings) { 
            jqXHR.setRequestHeader("HTTP_X_REQUESTED_WITH", "XmlHttpRequest" 
           } 
    
        ... 
        ... 
    } 
    

    希望に投稿するAJAX POSTを使用します:D

    5

    私はKishorのアプローチを試してみましたが、ヘッダが送信されませんでした。

    $.ajax { 
        beforeSend: function(jqXHR, settings) { 
        jqXHR.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); 
        }, 
        ... 
    }; 
    

    私はjQuery 1.8.2を使用しています。

    関連する問題