我有localhost:8000
运行的Ionic / angular 2应用程序该应用程序最终将在浏览器平台上运行。该应用程序正在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。
我知道角度可以通过查找XSRF-TOKEN
cookie来支持。
它也不起作用,因为您可以看到我将cookie的名称设置为XSRF-TOKEN
但是,对于任何其他请求,此cookie不会被发送。
我想知道如何保护这一点,就好像angular可以访问此cookie一样,其他任何脚本也是如此?
这是下一个请求,没有发送cookie。请忽略标题Authorization
,因为我的角度代码是直接设置的。
在我的角度应用中,我在设置最后一次获取请求时设置了withCredentials: true
选项。
更新
我曾使用adawy.com
,但我仍有同样的问题。
答案 0 :(得分:1)
第一个响应尝试在顶级域Domain=.adawy;
上显式设置cookie(请参阅Set-Cookie
标头),这是不允许的。如果可以,请尝试在没有域的情况下进行设置,看看是否有效。或者,尝试使用具有tld的主机名。