https://www.example.com 和 https://example.com socket.io 连接问题
https://www.example.com and https://example.com socket.io connection problem
如何让两个 https://example.com and https://www.example.com 端点连接?
socket.io 在 https://example.com 连接没问题
但不是 https://www.example.com
我的服务器看起来像
const server = http.createServer(app);
const io = socketIo(server, {
cors: {
origin: "https://www.example.com:3000",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true
}});
我的客户端端点如下所示
const ENDPOINT = 'https://example.com/';
配置您的 DNS 以将 example.com 和 www.example.com 指向同一主机 IP 地址,然后使用您的 cors 配置支持这两个域。然后,URL 将转到同一主机。
如果您将 socket.io 配置为使用 webSocket 立即启动,而不是通常启动的 http 轮询,则可以完全避免 cors。您可以通过将 transports: ['websocket']
选项添加到客户端连接来在客户端中执行此操作。
而且,您的自定义 header 可能会阻止 COR 并需要 pre-flight 许可。 CORs 有两个级别,简单和 not-simple。当您添加自定义 header 时,您会强制 COR 进入需要预检的 not-simple 路由,这可能比 built-in socketio cors 功能将处理的更多。
如何让两个 https://example.com and https://www.example.com 端点连接? socket.io 在 https://example.com 连接没问题 但不是 https://www.example.com
我的服务器看起来像
const server = http.createServer(app);
const io = socketIo(server, {
cors: {
origin: "https://www.example.com:3000",
methods: ["GET", "POST"],
allowedHeaders: ["my-custom-header"],
credentials: true
}});
我的客户端端点如下所示
const ENDPOINT = 'https://example.com/';
配置您的 DNS 以将 example.com 和 www.example.com 指向同一主机 IP 地址,然后使用您的 cors 配置支持这两个域。然后,URL 将转到同一主机。
如果您将 socket.io 配置为使用 webSocket 立即启动,而不是通常启动的 http 轮询,则可以完全避免 cors。您可以通过将 transports: ['websocket']
选项添加到客户端连接来在客户端中执行此操作。
而且,您的自定义 header 可能会阻止 COR 并需要 pre-flight 许可。 CORs 有两个级别,简单和 not-simple。当您添加自定义 header 时,您会强制 COR 进入需要预检的 not-simple 路由,这可能比 built-in socketio cors 功能将处理的更多。