【发布时间】:2018-01-10 06:24:58
【问题描述】:
我正在使用 Scala Play! 2.6 框架,但这可能不是问题。我正在使用他们的 Javascript 路由 - 它似乎工作正常,但它有问题。我有一个表单,它在渲染时会产生这个,带有一个 CSRF 令牌:
<form method="post" id="myForm" action="someURL">
<input name="csrfToken" value="5965f0d244b7d32b334eff840...etc" type="hidden">
<input type="text" id="sometext">
<button type="submit"> Submit! </button>
</form>
这大概是我的 AJAX:
$(document).on('submit', '#myForm', function (event) {
event.preventDefault();
var data = {
textvalue: $('#sometext').val()
}
var route = jsRoutes.controllers.DashboardController.postNewProject()
$.ajax({
url: route.url,
type: route.type,
data : JSON.stringify(data),
contentType : 'application/json',
success: function (data) { ... },
error: function (data) { ... }
})
});
但是当我发布这个时,我从我的服务器收到一个未经授权的响应,并且我在 IntelliJ 中的控制台告诉我 CSRF 检查失败。我将如何在请求中传递 CSRF 令牌?
【问题讨论】:
-
你解决了这个问题吗?
-
不是真的,但现在我关闭了 CSRF 检查...不要这样做
-
也许我的这个问题可能会有所帮助或提供帮助-> stackoverflow.com/questions/45017920/…
-
谢谢 - 我一直有这个问题 - 我在上面发布的表格遵循类似的方法添加
@CSRF.formField(我刚刚在渲染后显示它,因为它被发送给客户端)。我现在的问题是,当我通过 AJAX 请求发布时,它没有发送或检查它。 -
@KGCybeX 我已经设法修复它,如果您尝试使用 AJAX 发布任何内容,您稍后可能会遇到此问题 - 请参阅下面的答案。
标签: jquery ajax scala playframework csrf