问题背景简介
linux服务器上,nginx代理80端口,指向打包好的项目dist文件夹下的入口文件index.html,而用nodejs的express编写的服务器js运行在3000端口上,也就是包括socket.io的包也在3000端口上,客户端也就是其他主机访问我linux的端口80进入我的index.html,其中用script引用3000端口包时:
<script src="http://xx.xxx.xxx.xx:3000/socket.io/socket.io.js"></script>
会存在80端口到3000端口同ip不同端口的跨域问题
解决
就是在创建io的时候后面加上{ cors: true }:
var io = require('socket.io')(http,{ cors: true })
以上是CommonJS的引入方式,顺便说一下ES6模块如何引入socket.io:
import { Server } from "socket.io"; const io = new Server(http,{ cors: true });