Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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
Node.js 从源代码访问xmlhttprequesthttp://localhost:3000 由于CORS策略,已被阻止_Node.js_Reactjs_Express - Fatal编程技术网

Node.js 从源代码访问xmlhttprequesthttp://localhost:3000 由于CORS策略,已被阻止

Node.js 从源代码访问xmlhttprequesthttp://localhost:3000 由于CORS策略,已被阻止,node.js,reactjs,express,Node.js,Reactjs,Express,我已经为我正在开发的一个应用程序设置了一个前端和一个后端,我想测试前后发送的http请求,同时这两个请求在localhost中运行 使用React发送请求的代码: async componentDidMount(){ const {data: posts}= await axios.get("localhost:8765/..."); } 使用Express的app server的代码: const express = require(

我已经为我正在开发的一个应用程序设置了一个前端和一个后端,我想测试前后发送的http请求,同时这两个请求在localhost中运行

使用React发送请求的代码:

 async componentDidMount(){
           const {data: posts}= await axios.get("localhost:8765/...");
       }
使用Express的app server的代码:

const express = require('express')
const app = express()
require('./routes/...')(app)

app.listen(8765, () => {
    console.log("Server is listening on port 8765.")
})
前端正在本地主机3000上运行

这是我得到的错误:

Access to XMLHttpRequest at 'localhost:8765/...' from origin 'http://localhost:3000' 
has been blocked by CORS policy: Cross origin requests are only supported for protocol 
schemes: http, data, chrome, chrome-extension, chrome-untrusted, https.
我在网上找到了多种解决方案,如:

var cors = require('cors');

app.use(cors({origin: 'http://localhost:3000'}));
或:

或:


不过,似乎什么都不起作用,我仍然会遇到同样的错误,而且我已经陷入这个问题很长一段时间了。有什么想法吗?

只需使用res.setHeader('Access-Control-Allow-Origin','*')

基本原因是您不能通过JavaScript从一个域(端口)向另一个域发出请求。然而,有一些方法可以做到这一点。使用并添加
“代理”生成应用程序:http://localhost:8765“
到您的
包.json
文件。这将代理请求,忽略CORS问题。2.启动Chrome时使用
——禁用web安全性
,虽然这会起作用,但我并不建议这样做。将本地服务器配置为允许CORS,这方面有很多示例,例如,第一个选项最简单,但您可以尝试设置
Access Control allow Origin,“*”
您的错误基本上是因为您忘记在
axios.get
方法调用中添加协议
http
。请求将是
axios.get('http://localhost:8765/...)
。请查看此处的文章,因为我以前也遇到过同样的问题:
app.use(function (req, res, next) {

    
    res.setHeader('Access-Control-Allow-Origin', 'http://localhost:8888');

    
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    
    res.setHeader('Access-Control-Allow-Credentials', true);

    
    next();
});
app.use(cors())