【发布时间】:2017-12-05 21:57:01
【问题描述】:
我正在 Django 之上设置 VueJS SPA。我在/api 上运行石墨烯端点,graphiql 中的查询运行良好。我已经设置了前端,并且正在使用 Apollo Client 来查询服务器。我的设置完成了:
const CSRFtoken = Cookies.get('csrftoken')
const networkInterface = createNetworkInterface({
uri: '/api',
transportBatching: true
})
networkInterface.use([{
applyMiddleware (req, next) {
if (!req.options.headers) {
req.options.headers = {} // Create the header object if needed.
}
req.options.headers['X-CSRFToken'] = CSRFtoken
console.log('applied middleware')
next()
}
}])
const apolloClient = new ApolloClient({
networkInterface,
connectToDevTools: true
})
Vue.use(VueApollo)
const apolloProvider = new VueApollo({
defaultClient: apolloClient
})
new Vue({
el: '#app',
apolloProvider,
render: h => h(App)
});
我的 POST 请求具有“X-CSRFToken”标头,其值由Cookies 提供。截图如下:
不幸的是,Django 禁止访问(错误 403)并显示消息:“CSRF cookie missing”。
我在网上搜索过,但找不到任何相关内容。
提前致谢!
【问题讨论】:
-
那么...您的问题是什么,您收到 CSRF 错误了吗?
-
是的,403 Forbidden,Django 说它缺少 CSRF cookie。
-
如果您记录
const CSRFtoken,该值是否正确? -
是的,看起来不错