0

这是 github 上 Angularjs 1.6.4 中文件 http.js 的片段:

var xsrfValue = urlIsSameOrigin(config.url)
    ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName]
    : undefined;
if (xsrfValue) {
    reqHeaders[(config.xsrfHeaderName || defaults.xsrfHeaderName)] = xsrfValue;
}

为什么仅当请求用于同一来源时才包含 XSRF 令牌?如果 Restful 后端与前端位于不同的主机上,那么不应该使用 XSRF 吗?

4

1 回答 1

1

在这种情况下,XSRF 保护的工作原理是将config.xsrfHeaderName标头中接收的令牌与作为 cookie 接收的令牌进行比较config.xsrfCookieName(请参阅针对 xsrf 的“双重发布”保护)。无论如何,cookie 不会被发送到其他来源,因此发送标头没有意义。

在这种情况下,其他来源可能使用的身份验证不依赖于浏览器自动添加到请求的某些内容(即 cookie),但可能像大多数 API 一样基于令牌。在这种情况下,它不容易受到 xsrf 的攻击。

于 2017-05-23T06:15:01.520 回答