【发布时间】:2017-04-06 19:21:28
【问题描述】:
我的 Ionic/angular 2 应用程序在 localhost:8000 上运行,该应用程序最终将在浏览器平台上运行。该应用程序正在调用托管在我的本地计算机上的https://adawy/api 上的RESTFull api,其中adawy 是我的主机名,并在hosts 文件和apache 虚拟主机中定义。服务器端是 Slim 3。
身份验证后的 API 返回一个用于所有请求的 JWT。
我的目标是保护令牌免受跨站点请求伪造和跨站点脚本的影响。将令牌保存在 javascript 变量或任何形式的本地存储中将使 JWT 可以从 javascript 访问。
我发现最好的方法是将 JWT 作为 HTTPOnly cookie 返回。因此,它无法从 javascript 访问,并且只能由浏览器发送,其中包含对 adawy 域的任何即将到来的请求。
我已成功将令牌作为 cookie 返回,但问题是 cookie 没有随任何下一个 XHR 请求一起发送。
另外,我在 Devtools 的 Cookies 部分中看不到 cookie。
我知道 angular 可以通过查找 XSRF-TOKEN cookie 来支持此类问题。
它也不起作用,如您所见,我将 cookie 的名称设置为 XSRF-TOKEN,但是对于任何其他请求,都不会发送此 cookie。
我想知道如果 Angular 可以访问此 cookie 时如何保护它,那么任何其他脚本也可以吗?
这是下一个请求,没有发送 cookie。请忽略标题Authorization,因为我的角度代码直接设置它。
在我的 Angular 应用程序中,我在发出最后一个获取请求时设置了 withCredentials: true 选项。
更新
我使用了adawy.com,但我仍然遇到同样的问题。
【问题讨论】:
标签: php angular cookies ionic2 x-xsrf-token