railsでajax通信しようとすると、大概Can't verify CSRF token authenticity
で怒られると思います。
axiosでいきなりpostすると、こんなログが発行されいると思います。
セキュリティ上、変なデータ送信されないようにしているので、仕方ないですね。
CSRF tokenの発行場所
では、普段のjqueryではなぜ意識せずに使用できていたのか?
それは下記のようにmeta name
に設定しているからです。
<meta name="csrf-token" content="F6dek0xG3Kl/8fc8wlAdAdwWNgBhJ/O8da3ziVQG5y9yOxO7QUS8QVbro9+pLYF9/+qkHXQtrSwIcUteffGd1A==" />
これを$.ajax
を使用するときは勝手に設定してくれていたわけです。
それが外れたので、エラーになってます。
ということは、きちんと設定すれば行けます。
設定方法
axios.defaults.headers['X-CSRF-TOKEN'] = $('meta[name=csrf-token]').attr('content')
これを加えることで、headersに値を設定することができます。
参考