学校での作品制作してる時に詰まったAjaxをCSRFトークン無効化せずにやる方法をメモ代わりに書いておく。

headでcsrfトークンを埋め込む

<meta name="_csrf" th:content="${_csrf.token}" />
<meta name="_csrf_header" th:content="${_csrf.headerName}" />

リクエストヘッダーに、metaタグから取得した値を設定する

<script type="text/javascript">
    var token = $("meta[name='_csrf']").attr("content");
    var header = $("meta[name='_csrf_header']").attr("content");
    $(document).ajaxSend(function(e, xhr, options) {
        xhr.setRequestHeader(header, token);
    });

    $(function() {
        $('#button').on('click', function() {
            $.ajax({
                url : 'url',
                type : 'POST',
                data: {
                    project: "Test"
                }
            }).done(function(data) {
                $("#message").text("成功");
            }).fail(function(data) {
                $("#message").text("エラー: " + data.statusText);
            });
        });
    });
</script>

参考: http://terasolunaorg.github.io/guideline/5.0.0.RELEASE/ja/Security/CSRF.html#ajaxcsrf