jQueryでDomを生成して、htmlソースに追加しようと思って実行
CSRF token not found in body or query string
おうおうおう(^ω^;
@Override public F.Promise<Result> call(Http.Context ctx) { RequestHeader request = ctx._requestHeader(); // Check for bypass if (CSRFAction.checkCsrfBypass(request, config)) { return delegate.call(ctx); } else { // Get token from cookie/session Option<String> headerToken = CSRFAction.getTokenFromHeader(request, config); if (headerToken.isDefined()) { String tokenToCheck = null; // Get token from query string Option<String> queryStringToken = CSRFAction.getTokenFromQueryString(request, config); if (queryStringToken.isDefined()) { tokenToCheck = queryStringToken.get(); } else { // Get token from body if (ctx.request().body().asFormUrlEncoded() != null) { String[] values = ctx.request().body().asFormUrlEncoded().get(config.tokenName()); if (values != null && values.length > 0) { tokenToCheck = values[0]; } } else if (ctx.request().body().asMultipartFormData() != null) { String[] values = ctx.request().body().asMultipartFormData().asFormUrlEncoded().get(config.tokenName()); if (values != null && values.length > 0) { tokenToCheck = values[0]; } } } if (tokenToCheck != null) { if (tokenProvider.compareTokens(tokenToCheck, headerToken.get())) { return delegate.call(ctx); } else { return handleTokenError(ctx, request, "CSRF tokens don't match"); } } else { // ここにひっかかっているっぽい return handleTokenError(ctx, request, "CSRF token not found in body or query string"); } } else { return handleTokenError(ctx, request, "CSRF token not found in session"); } } }
そして色々検証してみる。
body
にappend()
=> エラー!
$('body').append(hiddenInput);
form
にappend()
=> エラー!
$('form').append(hiddenInput);
じゃ、じゃあ、id
に直接append()
=> エラー!
$('#hidden_list').append(hiddenInput);
全部だめ! 厳しい! 流石! (´;ω;`)ブワッ
あきらめて、htmlに直書きすることにしました。