【问题标题】:CORS policy Error: No 'Access-Control-Allow-Origin' header is present on the requested resourceCORS 策略错误:请求的资源上不存在“Access-Control-Allow-Origin”标头
【发布时间】:2020-11-18 13:45:11
【问题描述】:

我正在创建一个以节点为后端的反应应用程序但显示此错误

从源“http://localhost:3000”访问“http://localhost:5000/socket.io/?id=21af3bd7-faea-4300-8e2a-6866fe8274b1&EIO=4&transport=polling&t=NNPqjV0”处的 XMLHttpRequest已被 CORS 政策阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。

这是我的完整服务器端代码


const cors = require("cors");
const express = require("express");

const app = express();

app.use(
  cors({
    origin: "http://localhost:3000",
  })
);
io.on("connection", (socket) => {
  const id = socket.handshake.query.id;
  socket.join(id);

  socket.on("send-message", ({ recipients, text }) => {
    recipients.forEach((recipient) => {
      const newRecipients = recipients.filter((r) => r !== recipient);
      newRecipients.push(id);
      socket.broadcast.to(recipient).emit("receive-message", {
        recipients: newRecipients,
        sender: id,
        text,
      });
    });
  });
});

【问题讨论】:

  • 使用 app.use(cors());所以它会让访问来自不同服务器的api,你不需要给出特定的地址

标签: node.js sockets cors


【解决方案1】:

确保您使用了正确的端口,如果您使用了正确的端口,我真的不知道为什么它不应该工作,但您可以尝试以下选项之一:

添加多个端口

    app.use(cors({
        origin: [
            'http://localhost:someport',
            'https://localhost:port',
        ],
    }));

    app.use(cors());

允许所有来源。

【讨论】:

    【解决方案2】:
    const cors = require('cors');
    app.use(cors());
    app.options('*', cors());
    

    【讨论】:

      猜你喜欢
      • 2017-09-10
      • 2020-12-01
      • 2021-08-29
      • 1970-01-01
      • 2020-01-24
      • 2021-09-29
      • 2021-12-27
      • 2020-12-19
      • 1970-01-01
      相关资源
      最近更新 更多