Node.js VueJS前端和SailsJS后端之间的Axios CORS问题
我已经解决了这个问题,但我仍然无法从VueJs前端到SailsJS后端建立Axios连接。Vue在Node.js VueJS前端和SailsJS后端之间的Axios CORS问题,node.js,vue.js,cors,sails.js,Node.js,Vue.js,Cors,Sails.js,我已经解决了这个问题,但我仍然无法从VueJs前端到SailsJS后端建立Axios连接。Vue在localhost:8080上运行,而Sails在localhost:1337上运行。以下是错误消息和一些相关设置- Vue-Vue.config.js Vue-src/views/Example.Vue Sails-config/security.js Sails-api/controllers/ExampleController.js 我已经根据其他SO建议对这些设置进行了大量修改,但似乎没有
localhost:8080
上运行,而Sails在localhost:1337
上运行。以下是错误消息和一些相关设置-
Vue-Vue.config.js
Vue-src/views/Example.Vue
Sails-config/security.js
Sails-api/controllers/ExampleController.js
我已经根据其他SO建议对这些设置进行了大量修改,但似乎没有任何东西能够绕过这个CORS错误。有什么想法吗
编辑
我找到了一个可行的解决方案,尽管并不理想。如果我在操作级别添加此项,它将发送我的前端将接受的响应
Sails-api/controllers/ExampleController.js
在sails config/routes.js中,尝试:
'POST /api/v1/your_route': { action: 'your_path_to_action', cors: false, csrf: false },
为什么您的axios是默认的,
axios.defaults.baseURL='0http://localhost:8080“
设置为:8080?我也尝试在路由级别添加cors
和csrf
,但不幸的是,没有成功。看起来问题是来自Sails的响应在标题中没有“Access Control Allow Origin”,而我发现的唯一修复方法是在操作级别添加它。我用修正更新了我的问题。不幸的是,我认为我必须为每一个不理想的行动这样做。axios.defaults.baseURL只是我临时尝试的复制和粘贴代码,现在我把它取出来了。对我来说,它的工作原理是这样的cors:{allRoutes:true,allowOrigins:['https://example.com:1337', 'https://another_domain.com', 'http://an_IP’ ],AllowRequestsHeaders:'内容类型,授权,来源,X-request-With,,Accept',allowRequestMethods:'获取,放置,发布,修补,选项,删除,HEAD',allowCredentials:true,},
注意:很抱歉,它没有保持格式设置…不幸的是,它对我仍然不起作用。它必须是一些我刚刚忘记的配置设置,它与那些设置冲突。这是我唯一能想到的。
axios.defaults.baseURL = 'http://localhost:8080'
axios.defaults.crossDomain = true
axios.defaults.headers['Access-Control-Allow-Origin'] = '*'
const response = await axios.get('http://localhost:1337/hello')
module.exports.security = {
cors: {
allRoutes: true,
allowOrigins: '*',
allowCredentials: false,
methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD',
headers: 'content-type',
allowAnyOriginWithCredentialsUnsafe: true,
}
};
module.exports = {
hello: function(req, res) {
return res.status(200).send('hello');
}
}
module.exports = {
hello: function(req, res) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8080');
return res.status(200).send('hello');
}
}
'POST /api/v1/your_route': { action: 'your_path_to_action', cors: false, csrf: false },