3

tokenCSRF チェックを実装するために、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と、サーバーでエラーがスローされます。

私がやろうとしていることは可能ですか?

4

1 に答える 1