Ega*_*n N 7 sockets websocket node.js express socket.io
我的应用程序最近收到一个错误
“在‘ https://my-service-domain/socket.io/?EIO=3&transport=polling&t=M-eWtUQ ’从源‘ https://my-app-domain ’访问 XMLHttpRequest已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。”
当我连接到 socket.io 时。我还没有找到解决这个问题的方法,我将在下面的图片中详细描述,有没有人遇到过这个错误。
服务器配置:
var express = require('express');
var app = express();
app.use(function(req, res, next) {
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-Methods", "PUT, GET, POST, DELETE, OPTIONS");
next();
});
var http = require('http');
var server = http.createServer(app);
var io = require('socket.io').listen(server, {log:false, origins:'*:*'});
Run Code Online (Sandbox Code Playgroud)
客户端配置:
var socket = io('https://my-service-domain', {transports: ['polling']});
socket.on(channel_id, function(data){
// some code
});
Run Code Online (Sandbox Code Playgroud)
我尝试切换 websocket 连接选项var socket = io('https://my-service-domain', {transports: ['websocket']}),但出现错误
“WebSocket 连接到 'wss://my-service-domain/socket.io/?EIO=3& transport = websocket' 失败:WebSocket 握手期间出错:意外响应代码:400”
小智 14
If you are using Socket.IO v3, you need to explicitly enable Cross-Origin Resource Sharing (CORS).
const io = require("socket.io")(httpServer, {
cors: {
origin: "http://localhost:8080",
methods: ["GET", "POST"]
}
});
httpServer.listen(3000);
Run Code Online (Sandbox Code Playgroud)
sha*_*ker 13
它是 100% 工作的..我花了 2 个小时,终于找到了答案。只需用这个替换代码...
const express = require("express")
var app = express();
var server = app.listen(4000);
var io = require('socket.io')(server, {
cors: {
origin: '*',
}
});
Run Code Online (Sandbox Code Playgroud)
小智 0
如果您使用 HTTPS 协议,请尝试使用以下代码片段:
var http = require('https');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14578 次 |
| 最近记录: |