【发布时间】:2019-06-10 10:09:12
【问题描述】:
我有:
1) 具有自己的域的客户端应用程序:http://client.com
2) 具有单独域的服务器端应用程序:http://server.com
现在,
场景是:
1) 在浏览器中打开http://client.com/home,会显示一个HTML页面。
2) http://client.com/home 重定向到 http://server.com/login
3) http://server.com/login 存储一个 cookie 'auth' 并向 http://client.com/welcome 发送重定向指令
回复:
访问控制允许来源:*
连接:保持活动
内容长度:104
内容类型:文本/html;字符集=utf-8
日期:格林威治标准时间 2019 年 1 月 16 日,星期三 10:47:11
设置-Cookie: auth=1479da80-197c-11e9-ba74-59606594e2fb;路径=/
变化:接受
X-Powered-By: Express
4) 浏览器收到响应,其中包含 cookie 'auth'
5) 浏览器将自身重定向到http://client.com/welcome
6) 'auth' cookie 被发送到http://client.com/welcome
请求:
Cookie:auth=1479da80-197c-11e9-ba74-59606594e2fb
7) http://client.com/welcome 返回 HTML 但不返回 cookie 'auth'
8) http://client.com/welcome 向 http://server.com/data 发出 AJAX 请求(启用 CORS),但未发送 cookie 'auth'
9) http://server.com/data 无法识别用户,因为没有 cookie
客户端是一个由 Node.js 托管的 Angular 应用
编辑:
按照建议,我已添加到 server.com 的响应中:
访问控制允许凭据:true
但没有任何改变。
相关客户端代码:
const headerOptions = new HttpHeaders({
'Content-Type': 'application/json', 'withCredentials': 'true', 'Access-Control-Allow-Origin': 'true', 'Access-Control-Allow-Credentials': 'true'
});
this.httpClient.get<any>(this.baseUrl + "data", { headers: headerOptions }).subscribe((res) => {
【问题讨论】:
-
6) 'auth' cookie is sent to http://client.com/welcome必须是Set-Cookie: ...才能以Cookie的形式返回响应。能否贴出完整流程的请求/响应标头? -
@marekful - 完成
-
请详细说明第 3 步。
server.com究竟是如何设置 cookie 的。显示完整的标题。 -
@Styx - 我已经更新了问题
标签: node.js angular http redirect cookies