有用到 vue+socket.io(node.js)+nginx(ssl)做项目的大哥吗,请教一下

2021-08-28 15:36:58 +08:00
 zxCoder

客户端 vue 是用的"socket.io-client": "^4.1.3",连接代码是

 let socket=io("https://aa.bb.cc.dd");

服务端 node.js 代码是

    const server = https.createServer({
            key: fs.readFileSync('/etc/nginx/ssl/private.key'),
            cert: fs.readFileSync('/etc/nginx/ssl/certificate.crt'),
        });
    const io = require("socket.io")(server,{
        cors: {
            origin: "*",
            methods: ["GET", "POST","OPTION"],
        }
    });
    io.listen(3001);

本地运行正常,放服务器后启动,然后配置 nginx 代理和 ssl,配置是

server {
	listen 80 default_server;
	listen [::]:80 default_server;
	
	listen 443 ssl default_server;
	listen [::]:443 ssl default_server;

	ssl on;
	ssl_certificate /etc/nginx/ssl/certificate.crt;
	ssl_certificate_key /etc/nginx/ssl/private.key;
	ssl_session_timeout 5m;
	root /var/www/html;
	index index.html index.htm index.nginx-debian.html;

	server_name _;

	location / {
		try_files $uri $uri/ =404;

		# 按文档加的
		proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      	proxy_set_header Host $host;
      	proxy_pass https://localhost:3001;
      	proxy_http_version 1.1;
      	proxy_set_header Upgrade $http_upgrade;
      	proxy_set_header Connection "upgrade";
	}
}

报错是

Access to XMLHttpRequest at 'https://aa.bb.cc.dd/socket.io/?EIO=4&transport=polling&t=NkBhswM' from origin 'https://前端域名' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

一直报跨域的问题,StackOverflow 上查了很多相关的问题,试了都没能解决。。。

470 次点击
所在节点    问与答
1 条回复
hly9469
2021-08-28 17:53:53 +08:00
nodejs 服务用 http 起,https 全放在 nginx 上

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/798514

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX