Javascript express.js表示';访问控制允许原点';响应中的头不能是通配符'*';

Javascript express.js表示';访问控制允许原点';响应中的头不能是通配符'*';,javascript,node.js,express,socket.io,Javascript,Node.js,Express,Socket.io,我正在尝试通过cookies和授权头发送令牌进行身份验证,以确保头中的用户名和解码令牌中的用户名相同。但问题是,当我发送授权头时,on backend OPTIONS请求失败,出现204错误。没有标题,它的工作非常完美。 我所尝试的: 添加了用于处理此问题的中间件,选项仍为204 app.use((req, res, next) => { console.log(`headers`) console.log(req.headers) res.header("Access-Con

我正在尝试通过cookies和授权头发送令牌进行身份验证,以确保头中的用户名和解码令牌中的用户名相同。但问题是,当我发送授权头时,on backend OPTIONS请求失败,出现204错误。没有标题,它的工作非常完美。 我所尝试的: 添加了用于处理此问题的中间件,选项仍为204

app.use((req, res, next) => {
  console.log(`headers`)
  console.log(req.headers)
  res.header("Access-Control-Allow-Credentials", "true")
  res.header("Access-Control-Allow-Origin", "*")
  res.header("Access-Control-Allow-Headers", "X-Requested-With")
  res.header("Access-Control-Allow-Headers", "Content-Type")
  res.header("Access-Control-Allow-Headers", "Authorization")
  res.header("Access-Control-Allow-Methods", "PUT, GET, POST, DELETE, OPTIONS")
  if ('OPTIONS' == req.method) {
    res.send(200)
  }
  else {
    next();
  }
}) 
  • 建立cors
  • app.use(cors({withCredentials:true,credentials:true,origins:'http://localhost:8080“}”)

  • 设置socket.io

    var socket = require('socket.io')
    var app = express(),
    var http = require('http').createServer(app)
    const io = new socket(http, { path: '/api/chat', origins: 'http://localhost:8080' })
    http.listen(3000, () => console.log(`App is running on localhost:3000`.bold.yellow))
    const events = require('./src/socket')(io); 
    

  • 但它仍然不起作用。我错过了什么?

    忘了提一下,前端在:8080端口,我正在访问服务器在:3000。您的代码中有1和2吗?所以你有两个不同的中间件都试图添加CORS头?显然,是的。我删除了1,但它仍然不起作用。