代码之家  ›  专栏  ›  技术社区  ›  Deepak Dholiyan

php的节点js和express js https设置问题

  •  1
  • Deepak Dholiyan  · 技术社区  · 6 年前

    下面是chrome和mozilla的不同问题。

    Mozilla: 阻止的跨源请求:相同源策略 不允许读取domain.com上的远程资源

    铬: err_ssl_version_或_cipher_不匹配

    我查了很多,但没有找到解决办法。

    下面是我如何在服务器上创建密钥

    openssl genrsa -out server-key.pem 1024
    openssl req -new -key server-key.pem -out server-csr.pem
    openssl x509 -req -in server-csr.pem -signkey server-key.pem -out server-cert.pem
    

    php文件代码:

     <script>            
            var socket = io.connect( 'https://'+window.location.hostname+':3000' , {
            secure: true // for SSL
        });
    
            socket.on( 'message', function( data ) {
                if(curkey == data.key)
                {
                    $('#notif_audio')[0].play();
                    $( "#tbids" ).html( data.message ).css('color', '#a94442');
                }
            });
        </script>
    

    节点文件代码:

        var express = require('express');
         var app     = express();
        //var server  = require('https').createServer(app);
        var https = require("https");
        var fs = require("fs");
    
    app.use(function(req, res, next) {
        res.header("Access-Control-Allow-Origin", "*");
        res.header('Access-Control-Allow-Methods', 'DELETE, PUT');
        res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
        if ('OPTIONS' == req.method) {
            res.sendStatus(200);
        }
        else {
            next();
        }
    });
    
    var options = {
        key: fs.readFileSync("server-key.pem"),
        cert: fs.readFileSync("server-cert.pem")
    }
    
    var server  = https.createServer(app, options);
    
    var io      = socket.listen( server );
    var port    = process.env.PORT || 3000;
    
    io.set('origins', '*:*');
    
    server.listen(port, function () {
        console.log('Server listening at port %d', port);
    });
    
    io.on('connection', function (socket) {
        socket.on( 'message', function( data ) {
            io.sockets.emit( 'message', { 
                new_count_message: data.new_count_message,
                key: data.key
            });
        });
    });
    

    在cli上,node server.js工作正常,没有任何错误。意思是有 节点文件中没有错误。

    注意:-我已经用http在本地主机上成功地设置了这段代码。

    请帮助我解决这个问题。

    0 回复  |  直到 6 年前