Cors headers 处理不当(http 请求正常,但 socke.io 连接不正常)
Cors headers not handled properly ( http requests are fine, but socke.io connections not)
任何人都可以帮我解决这个问题。下面的代码没有正确处理cors。当我发送 http 请求时,返回的 headers 很好,但是试图通过套接字建立连接。io-client 我没有得到 cors headers 的响应。任何人都知道为什么会发生这种情况以及如何解决它?
const express = require("express");
const http = require('http')
const app = express();
const socket = require("socket.io");
const cors = require("cors");
app.use(cors());
app.options('*', cors())
app.use(express.json());
app.get('/', (req,res)=>{
res.send({e: 'elo'})
})
const server = http.createServer(app);
const io = socket(server);
io.on("connection", (socket) => {
console.log("user connected to: ")
});
io.on("message", (data) => {
console.log(data);
});
server.listen(3001);
Socket IO 与 express 分开处理 CORS。请参阅以下内容:
socket.io v2 docs
const io = socket(server, {
origins: ["https://example.com"]
});
socket.io v3 docs
const io = socket(server, {
cors: {
origin: "https://example.com",
methods: ["GET", "POST"]
}
});
在您的情况下,您可以将 *
传递给 origin
或 origins
属性(取决于您使用的版本)以允许所有来源。尽管建议将其锁定到某些来源。
任何人都可以帮我解决这个问题。下面的代码没有正确处理cors。当我发送 http 请求时,返回的 headers 很好,但是试图通过套接字建立连接。io-client 我没有得到 cors headers 的响应。任何人都知道为什么会发生这种情况以及如何解决它?
const express = require("express");
const http = require('http')
const app = express();
const socket = require("socket.io");
const cors = require("cors");
app.use(cors());
app.options('*', cors())
app.use(express.json());
app.get('/', (req,res)=>{
res.send({e: 'elo'})
})
const server = http.createServer(app);
const io = socket(server);
io.on("connection", (socket) => {
console.log("user connected to: ")
});
io.on("message", (data) => {
console.log(data);
});
server.listen(3001);
Socket IO 与 express 分开处理 CORS。请参阅以下内容:
socket.io v2 docs
const io = socket(server, {
origins: ["https://example.com"]
});
socket.io v3 docs
const io = socket(server, {
cors: {
origin: "https://example.com",
methods: ["GET", "POST"]
}
});
在您的情况下,您可以将 *
传递给 origin
或 origins
属性(取决于您使用的版本)以允许所有来源。尽管建议将其锁定到某些来源。