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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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 不管我怎么做,我都不能让CORS工作_Javascript_Node.js_Express - Fatal编程技术网

Javascript 不管我怎么做,我都不能让CORS工作

Javascript 不管我怎么做,我都不能让CORS工作,javascript,node.js,express,Javascript,Node.js,Express,由于评论中的怪异,问题得以解决。我的端点使用的是localhost:3030,而不是http://localhost:3030 Node在端口3030上运行,而ionic在端口8100上的serve中运行,因此localhost:3030和localhost:8100我知道这是问题所在,并已寻找所有实现和允许CORS的方法 从安装和使用cors中间件到遵循实现cors的其他指南,我已经尝试了一切。在下面的代码中,我尝试按照一个指南来创建一个自定义中间件,但即使这样也不起作用 Side note

由于评论中的怪异,问题得以解决。我的端点使用的是localhost:3030,而不是http://localhost:3030

Node在端口3030上运行,而ionic在端口8100上的serve中运行,因此localhost:3030和localhost:8100我知道这是问题所在,并已寻找所有实现和允许CORS的方法

从安装和使用cors中间件到遵循实现cors的其他指南,我已经尝试了一切。在下面的代码中,我尝试按照一个指南来创建一个自定义中间件,但即使这样也不起作用

Side note socket.io工作正常

app.use(bodyParser.urlencoded({'extended':'true'}));
app.use(bodyParser.json({ limit: '5mb' }));

// enable CORS
app.use(function( req, res, next ) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "x-requested-with, content-type");
    res.header("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE,OPTIONS");
    res.header("Access-Control-Allow-Credentials", "true");
    res.header("Access-Control-Max-Age", "1000000000");
    if ('OPTIONS' == req.method) { res.send(200); } else { next(); } 
});

io.on('connection', (socket) => {
    socketIo.process(socket, io);
});

app.post('*', (req, res) => { 
    post.process(req, res);
});

http.listen(port, function(){
    console.log('Listening on Port: ' + port);
});

我在尝试发布时遇到的错误

Access to XMLHttpRequest at 'localhost:3030/api/signin' from origin 'http://localhost:8100' has been blocked by CORS policy: 
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https.
我对express和reactJs应用程序也有同样的问题。为了解决这个问题,我添加了库

express上的cors示例:

const cors = require("cors");

const app = express();

app.use(
  cors({
    allowedHeaders: ["authorization", "Content-Type"], // you can change the headers
    exposedHeaders: ["authorization"], // you can change the headers
    origin: "*",
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    preflightContinue: false
  });
);
我对express和reactJs应用程序也有同样的问题。为了解决这个问题,我添加了库

express上的cors示例:

const cors = require("cors");

const app = express();

app.use(
  cors({
    allowedHeaders: ["authorization", "Content-Type"], // you can change the headers
    exposedHeaders: ["authorization"], // you can change the headers
    origin: "*",
    methods: "GET,HEAD,PUT,PATCH,POST,DELETE",
    preflightContinue: false
  });
);

Chrome不支持访问控制下的localhost允许源代码:'*'

访问控制允许源:*与本地主机不匹配


试试看,127.0.0.1而不是localhost,Chrome不支持访问控制下的localhost允许源代码:'*'

访问控制允许源:*与本地主机不匹配


试试127.0.0.1而不是localhost

这是什么:http.listen?是不是应该是app.list我不确定这两种方法是否有区别,我两种方法都没有问题。在我发布此消息之前,它是app.listen,但我尝试了http.listen尝试并使cors工作您的请求似乎是针对localhost:3030的,但错误消息表明它需要http-您尝试过吗http://localhost:3030/?Isn“难道错误是不言自明的吗?您正在使用localhost:3030/…,您应该使用http://localhost:3030/... 或https。这个特殊的错误是由客户端引起的。哇@freakish你完全正确,这正是问题所在,将http://添加到我的端点前端修复了向我的服务器发送帖子的所有问题。不知道我是怎么错过的这是什么:http.listen?是不是应该是app.list我不确定这两种方法是否有区别,我两种方法都没有问题。在我发布此消息之前,它是app.listen,但我尝试了http.listen尝试并使cors工作您的请求似乎是针对localhost:3030的,但错误消息表明它需要http-您尝试过吗http://localhost:3030/?Isn“难道错误是不言自明的吗?您正在使用localhost:3030/…,您应该使用http://localhost:3030/... 或https。这个特殊的错误是由客户端引起的。哇@freakish你完全正确,这正是问题所在,将http://添加到我的端点前端修复了向我的服务器发送帖子的所有问题。不知道我是怎么错过的,非常感谢你的帮助!我很高兴我帮了忙。您可以将答案标记为正确,并帮助其他面临相同问题的开发人员,而不是将标题更改为“已解决”。我会这样做,但没有人回答解决方案是什么。我确实有一秒钟把你的答案标记为解决方案,但意识到它不是完整的解决方案,不幸的是,它需要一个更简单的解决方案,因此我把它放在了问题中。如果你想编辑你的答案,也包括说的解决方案,我会非常乐意标记你的答案。好的,现在我看到了评论。公平地说,我从来没有在localhost中使用过http,因为浏览器从URL中删除http是没有用的。你没有错,我想这就是为什么我这么长时间没有看到这个细节。非常感谢你的帮助!我很高兴我帮了忙。您可以将答案标记为正确,并帮助其他面临相同问题的开发人员,而不是将标题更改为“已解决”。我会这样做,但没有人回答解决方案是什么。我确实有一秒钟把你的答案标记为解决方案,但意识到它不是完整的解决方案,不幸的是,它需要一个更简单的解决方案,因此我把它放在了问题中。如果你想编辑你的答案,也包括说的解决方案,我会非常乐意标记你的答案。好的,现在我看到了评论。公平地说,我从来没有在localhost中使用过http,因为它是无用的,因为浏览器从URL中删除了http。你没有错,我想这就是为什么我这么长时间都忽略了这个细节。