【发布时间】:2018-07-15 00:40:59
【问题描述】:
我尝试使用密码授权从 Angular api 登录到 laravel 应用程序。因此,我正在使用我的用户名和密码向代理脚本发出发布请求,该代理脚本还将我的客户端 ID 和客户端密码发送到 oAuth 服务器。因为我想在 cookie 中存储访问令牌和刷新令牌的加密版本,所以我在我的 post 请求中设置了 Access-Control-Allow-Credentials 标头以及常规的 cors 标头。但是当我这样做时,发布请求不再是所谓的“简单”发布请求,并且浏览器确实会自动发送预检 OPTIONS 请求。此请求的缺点是它不允许设置 Access-Control-Allow-Credentials 标头。如果你这样做,你会得到一个错误。那么,有什么办法解决呢?
我找到了一种解决方法,但我不喜欢它:我现在不发送 Access-Control-Allow-Credentials 标头,也不尝试返回 cookie。相反,我将我想要的数据放在响应正文中的 cookie(加密令牌)中。然后我用角度阅读正文并手动设置cookie。
【问题讨论】:
-
Access-Control-Allow-Credentials是 response 标头不是 请求标头。换句话说,这应该由服务器设置。 OPTION 请求由用户代理发送以查看在这种情况下我的选择是什么?一旦完成此协商/握手,如果用户代理看到它被给予“继续” " 由服务器,通过将 COR 标头与Access-Allow-*响应标头进行比较,它继续执行预期的跨域请求。
标签: angular laravel cookies http-headers access-control