经过几个小时的挖掘和测试后,我得到了当地的frontent(angular2)与dev后端对话。
在https请求和htaccess上使用withCredentials: true
:
Header add Access-Control-Allow-Origin "https://127.0.0.1:3000"
Header add Access-Control-Allow-Credentials "true"
Header add Access-Control-Allow-Methods "GET, POST"
在我重新加载页面之前一切正常 - 我必须再次登录 这是与请求一起发送的,但cookie PHPSESSID实际上并未保存在磁盘上:
Cookie:PHPSESSID=jp65lr9tviq6n5q9s1i0fupuq7
如果我构建代码并上传到后端所在的同一服务器,而不是使用CORS - 一切正常,但我在本地开发前端时无法做到这一点。
响应标题:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Methods:GET, POST
Access-Control-Allow-Origin:https://127.0.0.1:3000
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:105
Content-Type:text/html
Date:Tue, 04 Apr 2017 14:15:56 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.4.7 (Ubuntu)
Vary:Accept-Encoding
X-Powered-By:PHP/5.5.9-1ubuntu4.20
请求标题:
Accept:application/json, text/plain, */*
Accept-Encoding:gzip, deflate, br
Accept-Language:en-GB,en;q=0.8
Connection:keep-alive
Content-Length:62
Content-Type:application/x-www-form-urlencoded
Cookie:PHPSESSID=cjoe07094u4139i7c0pb4cd3e7
Host:dev.server.com
Origin:https://127.0.0.1:3000
Referer:https://127.0.0.1:3000/login
User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
我在这里缺少什么?
更新: 它似乎确实可以保存它 - 在错误的域名下。 cookie在api服务器域下设置,localhost无法再找到它。
答案 0 :(得分:1)
在webpack设置中设置代理:
proxy: {
'/authenticate': {
target: 'https://dev.server.com',
secure: false,
changeOrigin: true
},
'/Api': {
target: 'https://dev.server.com',
secure: false,
changeOrigin: true
}
}
与withCredentials一起:true解决了这个问题。