token
CSRF チェックを実装するために、Struts に同梱されているインターセプターを使用しようとしています。ただし、を使用する代わりに、<form />
JS 内から AJAX 呼び出しを行っています。
foo.jsp:
<!DOCTYPE html>
<%@ taglib uri="/struts-tags" prefix="s" %>
<html>
<body>
<s:token />
<script>
var strutsToken = "<s:property value="#session['struts.tokens.token']" />";
</script>
<script src="bar.js"></script>
</body>
</html>
bar.js:
$.ajax({
url: '/endpoint',
data: strutsToken,
dataType: 'jsonp',
cache: true,
success: function() { console.log('success'); },
error: function() { console.log('failure'); }
});
トークンの値が JS 変数になっていることを確認しました。
> strutsToken
"N3ZLLLR2Y3QGMZP0L3UCYWI5CO5NYZEY"
残念ながら、そのAJAXリクエストが行われるinvalid-token
と、サーバーでエラーがスローされます。
私がやろうとしていることは可能ですか?