Angular在使用资源时不使用cookie

时间:2015-01-20 18:01:33

标签: angularjs rest tomcat nginx

我遇到了很多话题,但我找不到问题的问题。

我正在开发一款应用:http://example.com:8081/app/

我有一个有角度的应用:http://example.com:8081/app/angular/http://example.com:8081/app/rest/

上的休息api

我已经创建了一个nginx服务器,以便代理这些域名,如:

http://angular.example.com =>代理角度应用程序和 http://rest.example.com =>代理其余的api。

Booth正在工作,正在沟通,但我存在一个问题,存储rest.exemple.com发送的cookie

登录服务后有响应标头:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Origin: "http://angular.example.com"
Connection:keep-alive
Content-Type:application/json
Date:Tue, 20 Jan 2015 17:52:19 GMT
Server:nginx/1.2.1
Set-Cookie:JSESSIONID=0F69455E4475CDFBF7D1C01BC4C1D121; Path=/app/; HttpOnly
Transfer-Encoding:chunked
Vary:Origin

然后angular不要使用这个JSESSIONID来调用它......

我已设置$httpProvider.defaults.withCredentials = true;,不会更改任何内容......

有什么想法吗?

编辑:当我将网址设为http://example.com:8080/app/rest/而不是http://rest.example.com/

时工作

有我的nginx conf:

server {

    listen 80;
    server_name rest.example.com;
    location / {
        proxy_pass  http://localhost:8081/app/rest/;
        proxy_redirect off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

@sergiocruz:document.cookie不返回任何内容,也包含http://example.com:8080/app/rest/

EDIT2:使用此帖子使用apache: How to properly set JSESSIONID cookie path behind reverse proxy

如果有人必须使用nginx解决方案:)

1 个答案:

答案 0 :(得分:0)

  

编辑:当我将网址设为http://example.com:8080/app/rest/而不是http://rest.example.com/

时工作

我不知道如何在nginx(maybe it helps)上做到这一点,但据我所知,你的cookie应该包含下一个标题字段domain=.example.com注意开头的一个点域名掩码。或者您可以明确设置domain=rest.example.com