Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.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
Javascript 响应中的Access Control Allow Origin标头不能是通配符'*';。。。Socket.io、NodeJs、ReactJs_Javascript_Node.js_Reactjs_Socket.io - Fatal编程技术网

Javascript 响应中的Access Control Allow Origin标头不能是通配符'*';。。。Socket.io、NodeJs、ReactJs

Javascript 响应中的Access Control Allow Origin标头不能是通配符'*';。。。Socket.io、NodeJs、ReactJs,javascript,node.js,reactjs,socket.io,Javascript,Node.js,Reactjs,Socket.io,我不熟悉socket.io。我的NodeJs/Express服务器中有以下代码 const http = require('http'); const socketIo = require('socket.io'); const app = express(); const server = http.createServer(app); const io = socketIo(server); io.on('connection', socket => { console.lo

我不熟悉socket.io。我的NodeJs/Express服务器中有以下代码

const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);

io.on('connection', socket => {
    console.log('New client connected');
    socket.on('disconnect', () => console.log('Client disconnected'));
    socket.emit('FromAPI', 'hello');
});
//My port here is 8848
app.listen(app.get('port'), () => {
    logger.log('info', `Server started at :${app.get('port')}`);
});
客户端React应用程序中的以下代码和我的React应用程序作为主机托管在端口3000中

使用此代码,我在浏览器控制台上出现以下错误:

轮询xhr.js:263 GET 405(不允许使用方法) 加载失败:当请求的凭据模式为“包括”时,响应中的“访问控制允许来源”标头的值不得为通配符“*”。因此,不允许访问源“”。XMLHttpRequest启动的请求的凭据模式由withCredentials属性控制


任何人都可以帮我解决这个问题。

根据MDN Web文档,您可以添加主机URL

解决方案1

可能已经有类似的问题得到了回答。如果这对您不起作用,请尝试解决方案2

下面是答案:

解决方案2

将可能的访问控制允许原点值限制为一组允许的原点需要服务器端的代码检查原点请求标头的值,将其与允许原点列表进行比较,然后如果原点值在列表中,则将访问控制允许原点值设为与原点值相同的值

访问控制允许来源:

那么你的情况呢

访问控制允许来源:

访问控制允许来源:


进一步相关QA

您的浏览器中是否有CORS扩展。如果是,打开它。如果没有,请使用此chrome扩展并尝试。[您需要使用正确的(调用)主机作为
访问控制允许源站的值进行响应
-不过老实说,我看不出您的CORS头是从哪里发送的anyway@anjuc-这是非常糟糕和危险的建议
import socketIO from 'socket.io-client';
componentDidMount() {
    const endPoint = 'http://127.0.0.1:8848';
    const socket = socketIO(endPoint);
    socket.on('FromAPI', data => console.log(data));

  }