0

我有我的 Ionic/angular 2 应用程序正在运行localhost:8000该应用程序最终将在浏览器平台上运行。该应用程序正在调用托管在我的本地计算机上的 RESTFull api ,我的主机名在https://adawy/api哪里,并在文件和 apache 虚拟主机中定义。服务器端是 Slim 3。adawyhosts

身份验证后的 API 返回一个 JWT,用于所有请求。

我的目标是保护令牌免受跨站点请求伪造和跨站点脚本的影响。将令牌保存在 javascript 变量或任何形式的本地存储中将使 JWT 可以从 javascript 访问。

我发现最好的方法是将 JWT 作为 HTTPOnly cookie 返回。因此它将无法从 javascript 访问,并且只能由浏览器发送,其中包含任何即将到来的adawy域请求。

我已成功将令牌作为 cookie 返回,但问题是 cookie 不会随任何下一个 XHR 请求一起发送。 在此处输入图像描述

另外,我在 Devtools 的 Cookies 部分中看不到 cookie。

在此处输入图像描述

我知道angular可以通过寻找XSRF-TOKENcookie来支持这种情况。它也不起作用,如您所见,我将 cookie 的名称设置为,XSRF-TOKEN但是,对于任何其他请求,都不会发送此 cookie。

我想知道如果 angular 可以访问这个 cookie,这将如何得到保护,任何其他脚本也可以?

这是下一个请求,没有发送 cookie。请忽略标题Authorization,因为我的角度代码直接设置它。

在此处输入图像描述

在我的角度应用程序中,我withCredentials: true在发出最后一个获取请求时设置了选项。

我用过的更新adawy.com,我仍然有同样的问题。

4

1 回答 1

1

第一个响应尝试在不允许的顶级域Domain=.adawy;(参见标题)上显式设置 cookie。Set-Cookie如果可以,请尝试在没有域的情况下设置它,看看是否有效。或者,尝试使用带有 tld 的主机名。

于 2017-04-06T20:22:50.360 回答