2012-09-11 163 views
1

我正在開發一個身份驗證網站,用於驗證Web服務中的數據。我的網站在本地運行,Web服務運行在不同的域名上,例如:test.abc.com。如果認證成功,則將響應存儲在cookie中。跨域請求withCredentials不起作用

如果數據在cookie中可用且未過期,則在第二次調用中不要求進行認證,但需要從後端驗證用戶。爲此,我使用下面的代碼。

$.ajax({ 
    url:"https://test.abc.com/test/DummyTest",    
    method:"GET", 
    dataType:"json", 
    beforeSend: function(xhr){ 
     xhr.withCredentials = true; 
    }, 
    success:function(data){ 
     alert(Success); 
    }, 
    error:function(xhr,err){ 
    alert("Error"); 
}); 

我使用jquery1.6

我檢查了瀏覽器選項和Cookie的存儲與我的本地主機IP(160.225.230.50)地址。但該Web服務位於不同的域(abc.com)。在第二次訪問時,我得到了錯誤響應。

請幫我解決這個問題。

回答

2

要使用此功能,您的授權頁面應發送Access-Control-Allow-OriginAccess-Control-Allow-Credentials標題。

當使用Access-Control-Allow-Credentials: true你可以不設置Access-Control-Allow-Origin到通配符,但需要指定產地:Access-Control-Allow-Origin: https://abc.com

此外,還有設置XHR領域的一個簡單的方法:

$.ajax({ 
    xhrFields: { 
    withCredentials: true 
    }, 
    type: 'POST', 
    url: ... 
});