我遇到了很多话题,但我找不到问题的问题。
我正在开发一款应用: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解决方案:)
答案 0 :(得分:0)
编辑:当我将网址设为http://example.com:8080/app/rest/而不是http://rest.example.com/
时工作
我不知道如何在nginx(maybe it helps)上做到这一点,但据我所知,你的cookie应该包含下一个标题字段domain=.example.com
注意开头的一个点域名掩码。或者您可以明确设置domain=rest.example.com