当前位置: 首页 > 知识库问答 >
问题:

套接字io CORS被阻止

濮阳驰
2023-03-14

我在使用https域和https套接字io时收到此警告。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://iosocket.transys.id:30005/socket.io/?EIO=3&transport=polling&t=McZQ-hN. (Reason: CORS request did not succeed).

我的代码是这样的:

var socket  = require( 'socket.io' );
var express = require('express');
var app     = express();
var server  = require('http').createServer(app);
var io      = socket.listen( server);
var port    = process.env.PORT || 3000;
var storesession = [];



server.listen(port, function () {
 console.log('Server listening at port %d', port);
 });

io.set('transports',['websocket']);
io.on('connection', function (socket) {

希望有答案来解决这个问题。我已经从其他人那里搜索过,但我申请时发现不起作用。

共有1个答案

郎伟兆
2023-03-14

根据项目的情况,这可能不是您所需要的。但无论如何,我写道,这可能会帮助一些人。我自己想连接到<code>Socket。IONodeJS从用php渲染的脚本中执行。

一个完整的工作代码可以是这样的两端:

服务器:

let pth = require('path');
let exp = require('express');
let app = exp();

//UPDATE: this is seems to be deprecated
//let io = require('socket.io').listen(app.listen(9009));
//New Syntax:
let io = require('socket.io')(app.listen(9009));

app.all('/', function (q, p, next) {
    p.header("Access-Control-Allow-Origin", "*");
    p.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});

io.on('connection', (socket) => {
    console.log("connected");
    socket.on('msg', (msg) => {
        console.log(msg);
        io.emit('msg', msg);
    });
});

客户端(在我的例子中是 php 脚本):

<head>
    <script src="http://127.0.0.1:9009/socket.io/socket.io.js"></script>
    <script>
        let $$ = (id) => {return document.getElementById(id);};

        var socket = io("127.0.0.1:9009/", {
            "force new connection": true,
            "reconnectionAttempts": "Infinity", 
            "timeout": 10001, 
            "transports": ["websocket"]
        });

        socket.on('msg', (msg) => {$$("holder").innerHTML += msg;});

        let emit = (_msg) => {socket.emit("msg", _msg);};
    </script>
</head>
<body>
    <?php echo "php echo ...";?>

    <div onclick="socket.emit('msg','my msg');">BUTTON</div>
    <div id="holder">Chat ...</div>
</body>
 类似资料:
  • 问题内容: 为什么有人会喜欢阻止写而不是非阻止写?我的理解是,仅当您想确保写方法返回后,另一端获得了TCP数据包时,才希望阻止写操作,但是我什至不知道这是可能的。您将必须刷新,而刷新则必须刷新 底层操作系统的写套接字缓冲区 。那么,无阻塞套接字写是否有任何缺点?就性能而言,拥有较大的底层写套接字是否会缓冲一个不好的主意?我的理解是,底层套接字写缓冲区越小,当底层套接字缓冲区已满且isWritabl

  • 问题内容: 我想创建一个非阻塞连接。像这样: 为此,我使用了另一个线程,无限循环和Linux epoll。像这样(伪代码): 如果我先运行服务器,然后运行客户端,那么一切正常。如果我先运行客户端,请稍等一会儿,再运行服务器,然后客户端将无法连接。 我究竟做错了什么?也许可以做不同的事情? 问题答案: 您应该使用以下步骤进行异步连接: 用创建套接字 开始与 如果返回值既不是也不是,则中止并返回错误

  • 我的应用程序最近收到一个错误 “在'https://my-service-domain/socket.io/?EIO=3 当我连接到 socket.io。我还没有找到这个问题的解决方案,我将详细描述如下图所示,是否有人遇到过此错误。 服务器配置: 客户端配置: 我试图切换webocket连接选项,我得到了错误 "WebSocket连接到'wss://my-service-field/socket.

  • 问题内容: 就像标题所说的那样,我需要一种方法来停止或中断正在等待套接字输入的阻塞线程。 问题答案: Thread.interrupt()应该是您要寻找的方法。确保您的输入访问方法也检查InterruptedException和ClosedByInterruptException。 另请参阅Sun Concurrency Tutorial 中的相应页面,作为另一种解决方案的建议。

  • 我遇到了一个问题,试图在Angular 9应用程序中打开SockJS套接字,并使用SimpMessageTemboard从Spring后端写入此套接字。此任务的主要目标是实时接收和显示传入数据,而不进行外轮询。 我的原始实现基于mouadelfakir完成的现有存储库,但实现使用了较旧版本的软件(Angular~1和Spring Boot~1.5)。当更新到新版本时,Angular 9更新没有改变

  • 我有一个小问题与Android和IOS之间实现套接字连接。当我使用我的应用程序连接两个Android运行设备时,一切正常。但是当我必须从Iphone应用程序接收一些数据时,我的readStream函数被阻塞,我可以在另一个部分关闭套接字后接收所有数据,这样我就不能返回任何响应。以下是我用来听的: 这里是我用来将转换为的函数: Iphone/Android应用程序的工作原理如下: 首先,它创建Soc