为了克服csrf攻击,我必须在每个请求中都发送一个包含csrf-token值的标头,并从cookie中选择该值,如此处所述。由于这是在每个请求中都要完成的,所以我在主模块的运行函数中设置了$http的默认标头。
现在,如果打开了同一网站的新选项卡,则服务器会发出新的csrf令牌(在cookie中)。由于运行函数仅运行一次,因此csrf的默认标头将是旧的(对于旧选项卡),而新的csrf cookie将被发送到服务器,导致csrf不匹配。
如何在全局层面解决这个问题?
我想创建一个函数,每次调用$http时都会运行它,这样我就可以覆盖默认标头。
注意:我不想为每个$http请求设置此标头值。
(并非我认为这与此相关,但我正在使用ui-router)
编辑
这不仅限于csrf-token,我还想根据已登录的用户设置其他一些头部信息,必须动态完成(例如当一个用户登录并注销后,另一个用户登录时)。
现在,如果打开了同一网站的新选项卡,则服务器会发出新的csrf令牌(在cookie中)。由于运行函数仅运行一次,因此csrf的默认标头将是旧的(对于旧选项卡),而新的csrf cookie将被发送到服务器,导致csrf不匹配。
如何在全局层面解决这个问题?
我想创建一个函数,每次调用$http时都会运行它,这样我就可以覆盖默认标头。
注意:我不想为每个$http请求设置此标头值。
(并非我认为这与此相关,但我正在使用ui-router)
编辑
这不仅限于csrf-token,我还想根据已登录的用户设置其他一些头部信息,必须动态完成(例如当一个用户登录并注销后,另一个用户登录时)。