它太奇怪了,我在localhost上测试我的app控制器方法:9000使用postman,对于我的GET api方法我没有问题访问并获得响应,但对于POST api方法我得到:
play.filters.CSRF - [CSRF]检查失败,因为找不到令牌 头
永远不会看到这条消息......
我有最简单的控制器:
def invoiceQA(): Action[JsValue] = Action.async(parse.json) { request =>
Future{Ok(Json.toJson("""{"message": "got your json"}"""))}
}
我的路线:
POST /update controllers.MyController.update
邮递员即将获得403禁止..
邮递员地址:
http://localhost:9000/update
有人知道为什么会这样吗??
答案 0 :(得分:3)
如果查看Play ScalaCsrf Docs,则会配置CSRF过滤器,并在给出任何条件时进行检查:
- 请求方法不是GET,HEAD或OPTIONS。
- 请求包含一个或多个Cookie或授权标头。
- CORS过滤器未配置为信任请求的来源。
如果您根本不想要CSRF保护,可以通过添加以下配置来禁用过滤器(Play Filters Docs中的更多信息:
play.filters.disabled+=play.filters.csrf.CSRFFilter
答案 1 :(得分:0)
如果您只想针对某条路由禁用CSRF,则可以执行以下操作:
+ nocsrf
POST /update controllers.MyController.update