ソースを参照

Feature: Add csrf settings for axios request

pull/169/head
winkidney 5年前
committed by Isaac Bythewood
コミット
602ca97d00
2個のファイルの変更39行の追加1行の削除
  1. +37
    -0
      pinry-spa/src/components/utils/csrf.js
  2. +2
    -1
      pinry-spa/src/main.js

+ 37
- 0
pinry-spa/src/components/utils/csrf.js ファイルの表示

@@ -0,0 +1,37 @@
import axios from 'axios';

function getCookie(name) {
const value = `; ${document.cookie}`;
const parts = value.split(`; ${name}=`);
if (parts.length === 2) {
return parts.pop().split(';').shift();
}
return null;
}


function getCSRFToken() {
return getCookie('csrftoken');
}

function csrfSafeMethod(method) {
// these HTTP methods do not require CSRF protection
return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
}

function setUpAxiosCsrfConfig() {
axios.interceptors.request.use(
(config) => {
if (!csrfSafeMethod(config.method.toUpperCase())) {
// eslint-disable-next-line no-param-reassign
config.headers['X-CSRFToken'] = getCSRFToken();
}
return config;
},
(error) => {
Promise.reject(error);
},
);
}

export default setUpAxiosCsrfConfig;

+ 2
- 1
pinry-spa/src/main.js ファイルの表示

@@ -3,11 +3,12 @@ import Vue from 'vue';
import { VueMasonryPlugin } from 'vue-masonry';
import App from './App.vue';
import router from './router';
import setUpAxiosCsrfConfig from './components/utils/csrf';

Vue.config.productionTip = false;
Vue.use(Buefy);
Vue.use(VueMasonryPlugin);
setUpAxiosCsrfConfig();

new Vue({
router,


読み込み中…
キャンセル
保存