Node.js vue socket.io连接尝试返回“;否';访问控制允许原点';标题“存在”;即使设置了原点也会出错

Node.js vue socket.io连接尝试返回“;否';访问控制允许原点';标题“存在”;即使设置了原点也会出错,node.js,sockets,socket.io,vue.js,Node.js,Sockets,Socket.io,Vue.js,我已经试着调试了几天了,我有过在其他1个应用程序上使用套接字的经验,但它在同一个域上,我没想到我会在跨域vue.js应用程序上遇到这么多麻烦 我一直在尽我最大的努力调试它,并且已经尝试了我能想到的一切 在node.js服务器中,我已使用 let io = require('socket.io')(http, {origins: '*:* agora.dev:*'}) 然后我倾听与你的联系 io.on('connection', (socket)=>{ console.log('c

我已经试着调试了几天了,我有过在其他1个应用程序上使用套接字的经验,但它在同一个域上,我没想到我会在跨域vue.js应用程序上遇到这么多麻烦

我一直在尽我最大的努力调试它,并且已经尝试了我能想到的一切

在node.js服务器中,我已使用

let io = require('socket.io')(http, {origins: '*:* agora.dev:*'})
然后我倾听与你的联系

io.on('connection', (socket)=>{
    console.log('connection received')
})
但是没有联系。在vue应用程序页面的控制台中,我得到的只是这些404错误

agora.dev/:1无法加载XMLHttpRequest . 请求的服务器上不存在“Access Control Allow Origin”标头 资源。因此,不允许访问源“”。 响应的HTTP状态代码为404

我使用的是vue.js网页包模板,还有vue-socket.io包和socket.io-client包

因此,我的main.js vue应用程序文件如下所示

import Vue from 'vue'
import App from './App'
import router from './router'
import socketio from 'socket.io-client'
import VueSocketIo from 'vue-socket.io'
var SocketInstance = socketio('http://agoraserver.dev')
Vue.use(VueSocketIo, SocketInstance)
因为这个问题,我甚至通过/etc/hosts将本地主机环境更改为域主机环境

但这也没有解决问题

我真的想不出别的了

我甚至在agoraserver中间件上启用了CORS,但是。。。这不是真的

//ENABLE CORS
app.all('/', function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "X-Requested-With");
    next();
});
我还在apache配置中添加了websocket代理,如果您建议迁移到nginx,请告诉我

<VirtualHost *:80>
    ServerAdmin ireply@myleisure.com.au
    DocumentRoot "/Users/Nik/Dropbox/host-root/var/www/nodes/agora"
    ServerName agoraserver.dev
        <Directory />
                Options -indexes +FollowSymLinks
                AllowOverride None
                Require all granted
        </Directory>

        RewriteEngine On
        RewriteCond %{HTTP:Upgrade} =websocket [NC]
        RewriteRule /(.*) ws://127.0.0.1:9999/$1 [P,L]
        RewriteCond %{HTTP:Upgrade} !=websocket [NC]
        RewriteRule /(.*) http://127.0.0.1:9999/$1 [P,L]

        ProxyRequests Off
        ProxyPreserveHost On
        ProxyVia Full
        <Proxy "*">
                Require all granted
        </Proxy>
        ProxyPass / "http://127.0.0.1:9999/"
        ProxyPassReverse / "http://127.0.0.1:9999/"

</VirtualHost>
这是怎么回事

顺便说一下,我在客户端和服务器上都使用socket.io版本^2.0.3。

因此,我所需要做的就是在http上而不是在app上侦听

    <IfModule mod_headers.c>
            Header set Access-Control-Allow-Origin: 'http://agora.dev'
            Header set Access-Control-Allow-Credentials true
    </IfModule>
GET http://agoraserver.dev/socket.io/?EIO=3&transport=polling&t=LwjHMHH 404 (Not Found)