我想從我的一臺服務器登錄到另一臺服務器,以發送需要被記錄的跨源請求。可能嗎?Ajax是否可以跨源登錄?
我有兩個Web服務器,A和B可以說www.a.com和www.b.com。 B有一個只能在客戶端登錄時才能使用的API。我需要從A客戶端使用該API。
所以,我來自客戶端的AJAX(POST)登錄請求發送到與CORS標頭,會話cookie和一個成功的重定向B的自家/指數硼。硼反應。
但是,當我做從客戶到B服務器的第二個Ajax請求(JSONP請求),該請求不發送以前的會話cookie收到,因此登錄請求失敗。
如果我手動登錄到www.b.com(在第二瀏覽器標籤),從A到B的所有請求都成功檢測爲登錄的用戶,那麼,乙API從A.
我工作認爲從我的登錄請求收到的會話cookie沒有保存到瀏覽器。
這是我的登錄請求:
$.post("www.b.com/login", { 'j_username': 'username', 'j_password': 'password' });
使用:
jqXHR.withCredentials = true;
settings.crossDomain = true;
響應頭:
Access-Control-Allow-Headers:x-requested-with
Access-Control-Allow-Methods:POST, GET, OPTIONS
Access-Control-Allow-Origin:*
...
Location:http://www.b.com/home
...
Set-Cookie:JSESSIONID=tY++VWlMSxTTUkjvyaRelZ0o; Path=/
收到被保存在cookie來www.a.com或www.b.com?如何從A客戶端ajax請求將此cookie設置爲www.b.com?我認爲這是問題。
當'b.com'以'SET-Cookie'頭,然後是設置了'b.com',這似乎是你想要的cookie的響應。不過,我認爲你需要指定一個非通配符允許的來源(即'http:// www.a.com'而不是'*'),因爲[如果服務器給出通配符'Access-Control' -Allow-Origin:*'response](http://stackoverflow.com/q/19743396/710446)。 – apsillers