“在使用app.use(cors())时,没有'Access-Control-Allow-Origin'标题出现在所请求的”[关闭]

问题描述 投票:-2回答:3

我试图在我的服务器端设置“Access-Control-Allow-Origin”,在我的代码中添加cors(),但它根本不起作用并返回此错误:“No'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 ✅ ⚙️");
});
node.js express cors
3个回答
0
投票

也许这是错字,它不是你的主要问题的答案,但你正在配置bodyParser 2次+头盔已经有反xss和mime类型的嗅探技术,模块只会降低性能速度(当然,如果你信任头盔,否则你可以删除那些模块)


0
投票

我在代码中发现了这个错误。在我的配置文件中,服务器的URL只是一个错误。但我想知道它为什么抛出与Access-Control-Allow-Origin相关的错误!


-1
投票

需要CORS pre-flight请求的内容类型(OPTIONS调用)是除以下内容之外的任何Content-Type:

  1. 应用程序/ x-WWW窗体-urlencoded
  2. 多部分/格式数据
  3. 纯文本/

这里我们需要添加Access控件头。

下面的代码将捕获方法类型OPTIONS的所有请求并发送回access-control-headers。

在您的server / main / index 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。

© www.soinside.com 2019 - 2024. All rights reserved.