我已经在 stack 上查看了多篇帖子,但仍然找不到正确的答案。
也查阅了 CORS 扩展文档。
我现在运行的服务器代码如下:
var WebSocketServer = require("ws").Server
var http = require("http")
var express = require('express')
var cors = require('cors')
var app = express();
app.use(cors());
var port = process.env.PORT || 9000
var server = http.createServer(app)
server.listen(port)
var count = 0;
var clients = {};
var rooms = {};
var wss = new WebSocketServer({server: server})
wss.on("connection", function(ws) {
ws.on("create-room", function(data) {
rooms[data] = {creator : data.user_id, created : new Date()}
})
ws.on("close", function() {
console.log("websocket connection close")
})
})
但是我遇到了以下问题:
XMLHttpRequest无法加载http://localhost:9000/socket.io/?EIO=3&transport=polling&t=LE-CbU0。当凭证标志为true时,“Access-Control-Allow-Origin”头中不能使用通配符“*”。因此,不允许http://localhost:8100访问。XMLHttpRequest的凭证模式由withCredentials属性控制。
如果我注释掉
app.use(cors());
这一行,我会遇到以下问题:XMLHttpRequest无法加载http://localhost:9000/socket.io/?EIO=3&transport=polling&t=LE-Cwb8。所请求的资源上不存在“Access-Control-Allow-Origin”头。因此,不允许http://localhost:8100访问。响应具有HTTP状态代码404。
所以显然我的服务器正常运行,但是……