gpt4 book ai didi

node.js - 带有 ssl 和 Access-Control-Header 的 socket.io/node.js

转载 作者:搜寻专家 更新时间:2023-10-31 23:25:07 26 4
gpt4 key购买 nike

我设置了一个 Node 服务器并在激活 ssl(官方证书,非自分配证书)时收到一条错误消息。

错误信息:

XMLHttpRequest cannot load https://servername:8081/socket.io/... No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://servername' is therefore not allowed access. results:1

但实际上,我在 .htaccess 文件中包含了以下代码:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
</IfModule>

apache 头模块已安装。

我的服务器:

var fs = require('fs');
var https = require('https');
var express = require ('express');

var options = {
key: fs.readFileSync('path to key'),
cert: fs.readFileSync('path to cert'),
ca: fs.readFileSync('path to ca')
};

app = express()
https.createServer(options,app).listen(8081)
var io = require('socket.io')(https);

io.sockets.on('connection', function (socket) {
...
}

我的客户:

<script language="JavaScript">
var socket = io.connect('https://servername:8081');
socket.emit(...);
</script>

有人知道这里出了什么问题吗?提前致谢!

最佳答案

好的,我在这里看到了一些东西:

  • 您需要像这样在您的客户端中包含 socket.io 库:

    <script src="https://servername:8081/socket.io/socket.io.js"></script>
  • 将安全参数设置为 true(在您的客户端)

    var socket = io.connect('https ://servername:8081', {secure: true});
  • 并将这些行添加到您的 SSL 选项:

    agent: false, 
    requestCert: true,
    rejectUnauthorized: false
  • 然后,如果它仍然不起作用,您可以尝试使用以下方式设置您的服务器:

    io.set('match origin protocol', true);

关于node.js - 带有 ssl 和 Access-Control-Header 的 socket.io/node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26195883/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com