我堆积在一个狗屎问题上并且无法找到解决方案......也许有人有想法。
我有一个基于sails.js的rest api并通过Angular.js发送一个帖子请求 - 工作正常我得到所有的响应数据!
但我无法读取标头cookie。 cookie始终为null ...
标题中应该是' Set-Cookie'。如果我用Rest工具调用相同的函数,我会得到cookie标题。
我正在使用本地主机端口:8000。其余的api在港口:1337
$http.post(url, json)
.success(function(data, status, headers, config) {
console.log(headers('Server'));
console.log(headers('Set-Cookie'));
})
.error(function(data, status, headers, config) {
console.log("error");
console.log("status " +status);
console.log("status " +angular.toJson(data));
});
有什么想法吗?
干杯!!
答案 0 :(得分:0)
首先,您永远不需要在Javascript中获取set-cookie
标头;浏览器处理为您设置cookie。如果您想检查cookie是否是响应的一部分,那么最好使用浏览器的开发控制台。
更重要的是,这里的问题是cookie根本不会被设置,因为这是一个跨源AJAX请求(不同的端口计为不同的来源),你可能还没有设置Sails中的CORS设置允许请求通过。
Sails中CORS的完整文档是here。开始测试的最简单方法是打开/config/cors.js
文件并将allRoutes
设置为true
;这将允许所有CORS请求无阻碍地通过,无论它们的来源或它们尝试访问的路由如何。一旦您完成了这项工作,您可以使用更精细的设置来锁定访问权限。
请注意,默认情况下,只有来自跨源请求的very few响应标头才能通过Javascript提供,其中set-cookie
绝对不是一个!