【发布时间】:2018-10-02 14:08:08
【问题描述】:
我想使用 Angular 6.x Web 应用程序将 tornado 作为后端服务器。如果我现在向本地托管的服务器发送 POST 请求,请求会到达,但 tornado 会以 403 回复,打印以下内容:
'_xsrf' argument missing from POST
由于我不想关闭 xsfr cookie,我现在需要一个解决方案,如何使用 Angular 6 的 HttpClient 添加此特定参数。 Angulars 官方文档仅声明,为所有请求设置了一个令牌。
现在有一个已弃用的版本,它通过将以下内容添加到app.module.ts 中定义的提供程序列表中来工作。然而,文档只是声明要查看新的 HttpClient,这并不是很有帮助。
{
provide: XSRFStrategy,
useValue: new CookieXSRFStrategy('csrftoken', 'X-CSRFToken')
}
后端cookies在登录时设置如下:
def post(self):
incorrect = self.get_secure_cookie("incorrect")
if incorrect and int(incorrect) > 10:
return
getusername = tornado.escape.xheml_escape(self.get_argument("username"))
getpassword = tornado.escape.xheml_escape(self.get_argument("password"))
print(getusername)
print(getpassword)
if getusername == "admin" and getpassword == "admin":
self.set_secure_cookie("user", self.get_argument("username"))
self.set_secure_cookie("incorrect", "0")
self.redirect(self.reverse_url("main"))
else:
incorrect = self.get_secure_cookie("incorrect") or 0
increased = str(int(incorrect) + 1)
self.set_secure_cookie("incorrect", increased)
self.write("Wrong username or password")
我绝对看到这根本不安全,但在进一步开发过程中会增加更多安全性。这只是一个让所有东西都能正常工作的基本示例。
也许你们中的某个人已经解决了这个问题,并且有一个解决方案,或者至少有一个提示。
【问题讨论】:
标签: angular security tornado x-xsrf-token