Angularjs 为什么XSRF令牌没有跨源发送?

Angularjs 为什么XSRF令牌没有跨源发送?,angularjs,security,cross-domain,csrf,x-xsrf-token,Angularjs,Security,Cross Domain,Csrf,X Xsrf Token,这是github上Angularjs 1.6.4中http.js文件的一个片段: var xsrfValue = urlIsSameOrigin(config.url) ? $$cookieReader()[config.xsrfCookieName || defaults.xsrfCookieName] : undefined; if (xsrfValue) { reqHeaders[(config.xsrfHeaderName || defaults.xsrfHead

这是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吗?

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

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