【问题标题】:Socket io CORS blocked套接字 io CORS 被阻止
【发布时间】:2019-08-13 00:27:26
【问题描述】:

我在使用 https 域和 https 套接字 io 时收到此警告。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://iosocket.transys.id:30005/socket.io/?EIO=3&transport=polling&t=McZQ-hN. (Reason: CORS request did not succeed).

我的代码是这样的:

var socket  = require( 'socket.io' );
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server);
var port    = process.env.PORT || 3000;
var storesession = [];



server.listen(port, function () {
 console.log('Server listening at port %d', port);
 });

io.set('transports',['websocket']);
io.on('connection', function (socket) {

希望有答案来解决这个问题。我已经从别人那里搜索过了,申请的时候还是不行。

【问题讨论】:

    标签: socket.io


    【解决方案1】:

    根据项目的情况,这可能不是您所需要的。但无论如何,我写它可能会帮助某人。我自己想从一个用 php 渲染的脚本连接到Socket.IO + NodeJS


    一个完整的工作代码两端都可以这样

    服务器

    let pth = require('path');
    let exp = require('express');
    let app = exp();
    
    //UPDATE: this is seems to be deprecated
    //let io = require('socket.io').listen(app.listen(9009));
    //New Syntax:
    let io = require('socket.io')(app.listen(9009));
    
    app.all('/', function (q, p, next) {
        p.header("Access-Control-Allow-Origin", "*");
        p.header("Access-Control-Allow-Headers", "X-Requested-With");
        next();
    });
    
    io.on('connection', (socket) => {
        console.log("connected");
        socket.on('msg', (msg) => {
            console.log(msg);
            io.emit('msg', msg);
        });
    });
    

    客户端(在我的例子中是一个 php 脚本):

    <head>
        <script src="http://127.0.0.1:9009/socket.io/socket.io.js"></script>
        <script>
            let $$ = (id) => {return document.getElementById(id);};
    
            var socket = io("127.0.0.1:9009/", {
                "force new connection": true,
                "reconnectionAttempts": "Infinity", 
                "timeout": 10001, 
                "transports": ["websocket"]
            });
    
            socket.on('msg', (msg) => {$$("holder").innerHTML += msg;});
    
            let emit = (_msg) => {socket.emit("msg", _msg);};
        </script>
    </head>
    <body>
        <?php echo "php echo ...";?>
    
        <div onclick="socket.emit('msg','my msg');">BUTTON</div>
        <div id="holder">Chat ...</div>
    </body>
    

    【讨论】:

      猜你喜欢
      • 2021-03-15
      • 2020-05-02
      • 2020-11-11
      • 2021-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-03
      • 1970-01-01
      相关资源
      最近更新 更多