2016-12-01 21 views
0

我試圖用rails api連接angular2應用程序。CORS餅乾與獲取請求一起工作,但不能在Angular2中發佈

爲了使用rails認證,我希望能夠在兩個域之間共享cookie。當我在我的角應用程序中調用http GET時,我會按照預期返回一個帶有設置cookie字段的響應,並且當我發送下一個GET請求時,cookie將一起發送。但是,當我用POST替換第二個GET時,它不是。這兩個調用都使用withCredentials = true。

當我撥打以下:

let options : RequestOptionsArgs = {}; 
options.withCredentials = true; 
this.http.get(this.baseUrl + 'sessions/login_attempt' ,options) 
    .toPromise(); 

我可以看到Chrome瀏覽器開發工具的請求頭的餅乾一起發送:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Cookie:request_method=GET; _commandsapp_session=SlRJdHdPQ3dadG94RDFWYmIxVWNnZnZUMzRwSU5pMjhoQ1NWV1loN2lNWUdIMTFrNmZyV2dJcWV4RHZON0p6WTJRcVRNSU8zM3BXV0dIWnJ4QXpYaEdSYUVLR1cvT3N6Wm1XNWxUVDJ6c3ltbll1dk9OSFdJdDZIdW5SM25BYTdOSGtwelhGU0NDRG1WZXQwSzlHZCt3PT0tLWwrc1BrWVA5Tk84ZEU4VE8zcUQ4L0E9PQ%3D%3D--f201c0d6e0fe67de323a10fb521614d165a50964 
Host:0.0.0.0:3000 
Origin:http://127.0.0.1:4200 
Referer:http://127.0.0.1:4200/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36 

然而,當我用後更換和添加一個身體,我看不到鉻是發送餅乾。

let options : RequestOptionsArgs = {}; 
    options.withCredentials = true; 
    this.http.post(this.baseUrl + 'sessions/login_attempt', {'username_or_email': 'admin', 'login_password':'password'} ,options) 
     .toPromise(); 

請求頭在Chrome瀏覽器開發工具:

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:sv-SE,sv;q=0.8,en-US;q=0.6,en;q=0.4 
Access-Control-Request-Headers:content-type 
Access-Control-Request-Method:POST 
Connection:keep-alive 
Host:0.0.0.0:3000 
Origin:http://127.0.0.1:4200 
Referer:http://127.0.0.1:4200/ 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.98 Safari/537.36 

回答

相關問題