跨域请求被阻止:同源策略禁止读取远程资源(原因:CORS请求未成功)

时间:2018-10-22 13:03:45

标签: laravel sockets cors

我想与Laravel + Redis + socket.io建立socket.io连接。

我在resources/assets/js/bootstrap.js中拥有的是:

从“ laravel-echo”导入Echo;

window.io = require('socket.io-client');

window.Echo = new Echo({
    broadcaster: 'socket.io',
    host: window.location.hostname + ':6001'
});

window.Echo.channel('channel-name')
    .listen('App.Events.ProfileUpdated', (e) => {
        alert('worked!');
        console.log('worked!');
    });

,但它返回跨域请求已被阻止:“同源起源”策略不允许读取http://mysite.local:6001/socket.io/?EIO=3&transport=polling&t=MQRqI94处的远程资源。 (原因:CORS请求未成功)。

然后,我尝试使用代码为const io = require('socket.io')(server, { origins: '*:*'});的链接here允许跨源访问,但是我没有任何服务器变量,因为我既不需要http也不需要{{1 }}。我不能使用express返回io.set('origins', '*:*');,我也用过TypeError: io.set is not a functionwindow.io,没有结果:|

然后我创建了一个名为cors的中间件,其代码如下:

io.origins('*:*')

我再次将其添加到return $next($request) ->header('Access-Control-Allow-Origin', '*') ->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS'); 中没有任何结果:(。我以前使用过routeMiddleware,但是我创建了一个名为localhost/mysite的虚拟主机,以确保mysite.local不变套接字请求的内容,即localhost/mysite

就像@SalmanZafar所说的那样,我使用link绕过了cors,这是我的http://mysite.local:6001命令的一部分,其中安装了cors中间件:

php artisan route:list

我该如何解决?

0 个答案:

没有答案
相关问题