我正在尝试通过在我的代码中添加下面的cors()来在服务器端设置“ Access-Control-Allow-Origin”,但它根本无法正常工作并返回此错误:“否'Access -Control-Allow-Origin'标头出现在前端提取的请求中!
出什么问题了?我在做什么错?!
var express = require("express");
var bodyParser = require("body-parser");
var expressValidator = require("express-validator");
var cors = require("cors");
var app = express();
var server = require('http').createServer(app);
var mongoose = require("mongoose");
var path = require("path");
var config = require("./config");
app.use(cors());
// app.options('*', cors()); // I also tested this one
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(expressValidator());
var port = process.env.PORT || 1111;
var helmet = require('helmet')
app.use(helmet())
const frameguard = require('frameguard')
app.use(frameguard())
const xssFilter = require('x-xss-protection')
app.use(xssFilter())
const ienoopen = require('ienoopen')
app.use(ienoopen())
const nosniff = require('dont-sniff-mimetype')
app.use(nosniff())
app.disable('x-powered-by')
const db = require('./config').mongoURI
app.use("/public", express.static(path.join(__dirname, "public")));
mongoose.Promise = global.Promise;
mongoose.connect(db, { useNewUrlParser: true })
app.set("superSecret", config.secret);
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());
app.use(require('./controller/v1'));
server.listen(port, function () {
console.log("⚙️ ✅ Server is running on port 1111 ✅ ⚙️");
});
答案 0 :(得分:0)
也许是拼写错误,不是您的主要问题的答案,但是您正在配置bodyParser 2次+头盔已经具有抗xss和mime类型的嗅探技术,并且该模块只会降低性能速度(当然,如果您信任头盔,否则您可以删除该模块)
答案 1 :(得分:0)
我在代码中找到了错误。这只是我的配置文件中有关服务器URL的一个错误。但是我想知道为什么它会引发与Access-Control-Allow-Origin相关的错误!
答案 2 :(得分:-1)
需要进行CORS飞行前请求(OPTIONS调用)的Content-Type是除以下内容之外的任何Content-Type:
在这里,我们需要添加访问控制标头。
下面的代码将捕获方法类型为OPTIONS的所有请求,并发送回access-control-headers。
在服务器/主目录/索引js文件上
const express = require('express');
const app = express();
app.all('*', function(req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Credentials', 'true');
res.header('Access-Control-Allow-Methods', 'PUT, GET, POST, DELETE, OPTIONS');
res.header(
'Access-Control-Allow-Headers',
'Origin, X-Requested-With, Content-Type, Accept, Authorization'
);
next();
});
该代码根据要求接受来自所有来源的CORS。