Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs CORS节点js问题_Angularjs_Node.js_Socket.io_Cors - Fatal编程技术网

Angularjs CORS节点js问题

Angularjs CORS节点js问题,angularjs,node.js,socket.io,cors,Angularjs,Node.js,Socket.io,Cors,在阅读了stack上的多篇文章后,我仍然找不到正确的答案 还检查了有关扩展的文档 我已启动并运行以下服务器代码: var WebSocketServer = require("ws").Server var http = require("http") var express = require('express') var cors = require('cors') var app = express(); app.use(cors()); var port = process.env.P

在阅读了stack上的多篇文章后,我仍然找不到正确的答案

还检查了有关扩展的文档

我已启动并运行以下服务器代码:

var WebSocketServer = require("ws").Server
var http = require("http")
var express = require('express')
var cors = require('cors')
var app = express();

app.use(cors());
var port = process.env.PORT || 9000

var server = http.createServer(app)
server.listen(port)
var count   = 0;
var clients = {};
var rooms   = {};
var wss = new WebSocketServer({server: server})
wss.on("connection", function(ws) {
    ws.on("create-room", function(data) {
        rooms[data] = {creator : data.user_id, created : new Date()}
    })
    ws.on("close", function() {
        console.log("websocket connection close")
    })
})
但我得到:

无法加载XMLHttpRequest . A. 通配符“*”不能在“访问控制允许源”中使用 凭据标志为true时的标头。起源 因此不允许访问“”。这个 XMLHttpRequest的凭据模式由 withCredentials属性

如果我用
app.use(cors())注释行

我得到:

无法加载XMLHttpRequest . 不 “Access Control Allow Origin”标头出现在请求的服务器上 资源。因此,不允许使用源“” 通道响应的HTTP状态代码为404


很明显,我的服务器已启动并正常运行,但正如错误消息所述,通配符
访问控制允许源站
源站不能与
访问控制允许凭据一起使用。默认情况下,
cors
模块使用wildward原点,默认情况下,socket.io需要凭据(或者在这里看起来是这样)。您需要做的是读取请求的
Origin
标题,并将其包含在响应的
访问控制允许Origin

幸运的是,
cors
使这变得非常简单:为了反映请求的来源,传入一个带有
origin:true
属性的options对象。您还需要一个
credentials:true
属性来允许凭据:

app.use(cors({
    origin: true,
    credentials: true
}));

感谢您的回复,现在我获得
凭据标志为“true”,但“访问控制允许凭据”标题为“”
但有一个问题,现在当浏览器调用url时,我得到404。。。如果我删除你的解决方案,我会得到cors错误。。。这让人困惑…嗨,我读了整个帖子,但这对我来说不起作用。你也能看看我的问题吗?