Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Express 如何在fullstack应用程序中解决CORS策略问题_Express_Vue.js_Cors_Axios - Fatal编程技术网

Express 如何在fullstack应用程序中解决CORS策略问题

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

我正在构建一个MEVN堆栈应用程序,但由于跨源策略,我无法从前端向服务器发出请求。我已经为所有路由启用了cors中间件,但它没有生效。我还尝试在每条路线上单独应用它,并指定原点,但仍然没有效果

index.js:

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。感谢您的回答。不幸的是,这正是我已经尝试过的。你完全正确!我甚至不认为我的实际要求是问题的根源。。。非常感谢!