Express 如何在fullstack应用程序中解决CORS策略问题
我正在构建一个MEVN堆栈应用程序,但由于跨源策略,我无法从前端向服务器发出请求。我已经为所有路由启用了cors中间件,但它没有生效。我还尝试在每条路线上单独应用它,并指定原点,但仍然没有效果 index.js:Express 如何在fullstack应用程序中解决CORS策略问题,express,vue.js,cors,axios,Express,Vue.js,Cors,Axios,我正在构建一个MEVN堆栈应用程序,但由于跨源策略,我无法从前端向服务器发出请求。我已经为所有路由启用了cors中间件,但它没有生效。我还尝试在每条路线上单独应用它,并指定原点,但仍然没有效果 index.js: const express = require('express') const cors = require('cors') const mongoose = require('mongoose') const BanksController = require('./control
const express = require('express')
const cors = require('cors')
const mongoose = require('mongoose')
const BanksController = require('./controllers/BanksController')
const OfficesController = require('./controllers/OfficesController')
const PORT = process.env.PORT || 3000
mongoose.connect(process.env.DB, { useNewUrlParser: true, useUnifiedTopology: true });
const app = express()
app.use(cors({ origin: 'http://localhost:3001' }))
app.get('/api/banks', BanksController.index)
app.get('/api/offices', OfficesController.index)
app.listen(PORT, () => console.log('Listening on port ' + PORT))
ajax请求:
axios.get('localhost:3000/api/banks')
.then(res => console.log(res))
.catch(err => console.log(err))
尝试添加:
app.use(cors({ origin: 'http://localhost:3001/*' }))
它将为所有路线启用。或者直接使用:
app.use(cors())
app.options('*', cors());
尝试更改此选项:
axios.get('localhost:3000/api/banks')
为此:
axios.get('http://localhost:3000/api/banks')
请注意错误消息如何抱怨协议方案
问题不在于您的服务器。问题是使用localhost:3000
将localhost:
视为一种方案。“scheme”是URL第一个冒号之前的位
您甚至不会在开发人员工具的网络部分看到请求,因为浏览器不知道如何发出
localhost:
“请求”。请包含完整的错误消息好吗?CORS策略已阻止从源站访问“localhost:3000/api/banks”处的XMLHttpRequest:跨源站请求仅限于支持协议方案:http、数据、chrome、chrome扩展、https。感谢您的回答。不幸的是,这正是我已经尝试过的。你完全正确!我甚至不认为我的实际要求是问题的根源。。。非常感谢!