2017-04-20 122 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