2017-08-10 42 views
1

首先,我成功登錄,並通過服務器在瀏覽器中設置cookie:得到錯誤,同時使用下面的代碼片段發送jqueryAjax要求

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    async: true, 
    crossDomain: true, 
    url: "https://krdly-web-dev0.cfapps.io/session", 
    method: "POST", 
    processData: false, 
    contentType: false, 
    mimeType: "multipart/form-data", 
    data: form 
}; 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 

,但我得到「500:內部服務器錯誤」當我使用下面的代碼用於獲取用戶配置文件:

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    async: true, 
    crossDomain: true, 
    url: "https://krdly-web-dev0.cfapps.io/user", 
    method: "GET", 

    xhrFields: { 
    withCredentials: true 
    }, 

    processData: false, 
    contentType: false, 
    mimeType: "multipart/form-data", 
    //data: form 
}; 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 

下面的代碼是由郵遞員給出,但它在瀏覽器一點兒也不作品:

var form = new FormData(); 
form.append("email", "[email protected]"); 
form.append("pword", "pass123"); 
form.append("geo", "6.4636835,3.8494566"); 

var settings = { 
    "async": true, 
    "crossDomain": true, 
    "url": "https://krdly-web-dev0.cfapps.io/user", 
    "method": "GET", 
    "headers": { 
    "cache-control": "no-cache", 
    "postman-token": "70f8a8cf-6a8f-4905-aaed-69acaeb63cd2" 
    }, 
    "processData": false, 
    "contentType": false, 
    "mimeType": "multipart/form-data", 
    "data": form 
} 

$.ajax(settings).done(function(response) { 
    console.log(response); 
}); 
+1

我會從你的問題刪除您的令牌,鏈接和其它敏感信息。我試圖打開這個鏈接 - https://krdly-web-dev0.cfapps.io/user - 它給出了500.也許一切正常,你的代碼和問題在服務器端? – curveball

+0

請有人做這個工作,我會非常感激,如果一個jQuery的專家會這樣做:也可以在Skype上討論:[email protected] – mubsher

+0

它工作正常郵遞員並返回用戶的詳細信息,而不是API問題 – mubsher

回答

0

由於某種原因,由POST ajax請求發送的cookie不是由瀏覽器設置的。只需將以下內容添加到ajax POST請求中即可:

xhrFields: { 
    withCredentials: true 
}, 

解決此問題。以下是我的代碼:

<!doctype html> 
<html> 
<head> 
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"> 
    </script> 
</head> 
<body> 
    <div class=""> 
     <button type="button" name="button">Send Ajax Request</button> 
    </div> 
    <script type="text/javascript"> 
    $(document).ready(function(){ 
     $("button").click(function(){ 
     // sendSecondRequest() 
      // .always(sendFirstRequest) 
      // .always(sendSecondRequest); 
     sendFirstRequest().done(sendSecondRequest); 
     }); 
    }); 
    function sendFirstRequest(){ 
     var form = new FormData(); 
     form.append("email", "[email protected]"); 
     form.append("pword", "pass123"); 
     form.append("geo", "6.4636835,3.8494566"); 

     var settings = { 
     async: true, 
     crossDomain: true, 
     url: "https://krdly-web-dev0.cfapps.io/session", 
     method: "POST", 
     processData: false, 
     contentType: false, 
     mimeType: "multipart/form-data", 
     data: form, 
     xhrFields: { 
      withCredentials: true 
     } 
     }; 

     return $.ajax(settings).done(function(response) { 
     console.log(response); 
     }); 
    } 

    function sendSecondRequest(){ 
     var form = new FormData(); 
     form.append("email", "[email protected]"); 
     form.append("pword", "pass123"); 
     form.append("geo", "6.4636835,3.8494566"); 

     var settings = { 
     async: true, 
     crossDomain: true, 
     url: "https://krdly-web-dev0.cfapps.io/user", 
     method: "GET", 

     xhrFields: { 
      withCredentials: true 
     }, 

     processData: false, 
     contentType: false, 
     mimeType: "multipart/form-data", 
     //data: form 
     }; 

     return $.ajax(settings).done(function(response) { 
     console.log(response); 
     }); 
    } 
    </script> 
</body> 

參考文獻:

https://stackoverflow.com/a/7189502/566092

http://aleembawany.com/2006/11/14/anatomy-of-a-well-designed-ajax-login-experience/

+0

謝謝@coding_idiot,我已經嘗試過,但我不工作.. – mubsher

+0

奇怪的是,我再次嘗試在鉻隱身,它工作正常。您是否能夠在第一次請求後使用某個Chrome Cookie擴展名查看目標域的Cookie? –

+0

Thanx很多人,你是一個多才多藝...... – mubsher

相關問題