Angularjs 无法访问Angular.js中的响应cookie
我正试图从对$http请求的响应中提取cookies。Angularjs 无法访问Angular.js中的响应cookie,angularjs,cookies,Angularjs,Cookies,我正试图从对$http请求的响应中提取cookies。 请求与cookie一起返回,但我无法获取cookie以便存储它。 反应的图片表明一切正常 但是,如果我尝试通过以下方法提取Set Cookie头的值 .then(function(response) { //First function handles success log(response.data); registrationOutcomeText = response.data; log(r
请求与cookie一起返回,但我无法获取cookie以便存储它。
反应的图片表明一切正常 但是,如果我尝试通过以下方法提取Set Cookie头的值
.then(function(response) {
//First function handles success
log(response.data);
registrationOutcomeText = response.data;
log(response.headers('Set-Cookie'));
}
我无法这样做,因为我收到一个空结果
通过检查我的cookies,我知道它没有被保存,所以
$cookies.get("AuthToken")
无法工作。我认为您的解决方案可能是拦截响应,如文档中的“转换请求和响应”部分所述:
$http对,所以这个解决方案可能很糟糕,但我觉得它是必要的。原因是:
.header("Authentication", authToken)
(例如)
接下来,我需要在我的CORS过滤器中公开此自定义标题。因为我有一个Java服务器,所以我的CORS过滤器是这样的:
@Provider
public class NewCrossOriginResourceSharingFilter implements ContainerResponseFilter {
@Override
public void filter(ContainerRequestContext requestContext, ContainerResponseContext response) {
response.getHeaders().putSingle("Access-Control-Allow-Origin", [My site]);
response.getHeaders().putSingle("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, DELETE");
response.getHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type");
response.getHeaders().putSingle("Access-Control-Expose-Headers", "Authentication");
response.getHeaders().putSingle("Access-Control-Allow-Credentials", true);
}
}
请注意,如果直接复制和粘贴,这将不起作用,因为您需要用自己的域替换[My site]值,否则您的请求将无法满足CORS筛选器
最后,这意味着在客户端我可以很容易地访问标题“Authentication”,如下所示
.then(function(response) {
$scope.registrationOutcomeText = response.data;
console.log(response.headers("Authentication"));
}
从那里,我可以访问、存储和检索cookie,解决最初在答案开始时发现的所有三个问题 我不确定这会有什么帮助,除非我弄错了,否则这与从响应中获取cookie无关。如果您查看此部分:您将找到一种访问响应标题的方法,因为transformResponse会填充
(数据、HeaderGetter、状态)
作为其回调的参数。这个问题可能有帮助:var cookie=response.headers('Set-cookie');
.then(function(response) {
$scope.registrationOutcomeText = response.data;
console.log(response.headers("Authentication"));
}