gpt4 book ai didi

node.js - Socket.io + Node.js 跨域请求被阻止

转载 作者:IT老高 更新时间:2023-10-28 21:53:16 25 4
gpt4 key购买 nike

我正在使用 node 和 socket.io 来编写一个聊天应用程序。它在 Chrome 上运行良好,但 mozilla 在启用跨域请求时出错。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://waleedahmad.kd.io:3000/socket.io/?EIO=2&transport=polling&t=1401964309289-2&sid=1OyDavRDf4WErI-VAAAI. This can be fixed by moving the resource to the same domain or enabling CORS.

这是我启动 Node 服务器的代码。

var express = require('express'),
app = express(),
server = require('http').createServer(app),
io = require('socket.io').listen(server),
path = require('path');
server.listen(3000);

app.get('/', function(req, res) {
res.sendfile(__dirname + '/public/index.html');
});

在客户端。

var socket = io.connect('//waleedahmad.kd.io:3000/');

HTML 页面上的脚本标记。

<script type="text/javascript" src="//waleedahmad.kd.io:3000/socket.io/socket.io.js"></script>

我还在应用根目录中使用 .htaccess 文件。 (waledahmad.kd.io/node)。

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

最佳答案

简单的服务器端修复

❗ 不要使用“socketio”包...改用“socket.io”。 “socketio”已过时。有些用户似乎使用了错误的包。

❗ 安全警告:设置来源 * 使网络钓鱼网站能够模仿您网站的外观和感觉,然后在窃取用户信息的同时使其正常工作。如果你设置原点,你可以让他们的工作更难,而不是更容易。也在考虑使用 CSRF token也是个好主意。

socket.io v3

文档:https://socket.io/docs/v3/handling-cors/

cors 选项:https://www.npmjs.com/package/cors

const io = require('socket.io')(server, {
cors: {
origin: '*',
}
});

socket.io < v3

const io = require('socket.io')(server, { origins: '*:*'});

io.set('origins', '*:*');

io.origins('*:*') // for latest version

* 单独不起作用,这让我陷入了兔子洞。

关于node.js - Socket.io + Node.js 跨域请求被阻止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24058157/

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