Skip to content
This repository was archived by the owner on Aug 29, 2025. It is now read-only.

Commit 6e7dc8e

Browse files
committed
Reviews app: provide csrfToken
1 parent 63b004e commit 6e7dc8e

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

reviews/app/vue/app.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,25 @@ const reviews = Vue.createApp ({
6969

7070
// initially fill list of my reviews
7171
reviews.fetch()
72+
73+
axios.interceptors.request.use(csrfToken)
74+
function csrfToken (request) {
75+
if (request.method === 'head' || request.method === 'get') return request
76+
if ('csrfToken' in document) {
77+
request.headers['x-csrf-token'] = document.csrfToken
78+
return request
79+
}
80+
return fetchToken().then(token => {
81+
document.csrfToken = token
82+
request.headers['x-csrf-token'] = document.csrfToken
83+
return request
84+
}).catch(() => {
85+
document.csrfToken = null // set mark to not try again
86+
return request
87+
})
88+
89+
function fetchToken() {
90+
return axios.get('/', { headers: { 'x-csrf-token': 'fetch' } })
91+
.then(res => res.headers['x-csrf-token'])
92+
}
93+
}

0 commit comments

Comments
 (0)