2017-04-20 155 views
1

我想從我的後端API爲特定的數據模型('cart')設置一個會話cookie。Ember:沒有設置API的會話cookie

當在模型上調用createRecord時,我看到XHR「POST」請求到我的API。我看到API處理它並做出響應,並且我在響應頭文件中看到了Set-Cookie ...但瀏覽器中沒有cookie!

雖然在不同的端口上,但是應用程序和api位於相同的域(本地主機)上。我GOOGLE了,它似乎cookies are not port-specific。所以我看不出有什麼阻止它。

我嘗試使用Chrome擴展郵遞員向API提交相同的POST,它工作得很好 - 在瀏覽器中設置cookie。只是在請求來自燼應用程序時不起作用。雖然我沒有在任何地方看到任何錯誤。

在燼裏有什麼東西阻止cookie被設置?我不明白爲什麼會出現這種情況,我認爲瀏覽器應該在ember重新開始前處理響應頭文件。

我要走在這個死亡的兔子洞!任何幫助讚賞。這是請求/響應。

enter image description here

+0

您是否嘗試過使用不同的域名?在Chrome中,有時Firefox本地主機存在Cookie cookie問題。看到[這裏](http://stackoverflow.com/a/16328311/2471991)和[這裏](http://stackoverflow.com/questions/28583729/localhost-cookies-not-set) – Timm

+0

這是一個很好的想法 - 但仍然不工作:( – tarponjargon

回答

3

如果你想跨域請求,您可能需要授予的權限都在應用,以及在服務器上。如果是這樣,請閱讀CORS。此外,如果你有httpOnly Cookie,就必須設置withCredientials場在你的Ajax請求爲:

 xhrFields: { 
     withCredentials: true 
     } 

你可以閱讀更多的withCredential here。這兩個是cookie問題的主要因素。

+0

謝謝!!我花了更多的時間比我想承認這一點。 – tarponjargon