【问题标题】:CORS error, unable to send request to APICORS 错误,无法向 API 发送请求
【发布时间】:2021-07-02 13:23:56
【问题描述】:

以下是我的代码,我无法弄清楚为什么会得到 >net::ERR_CONNECTION_REFUSED TypeError: 获取失败

 const signup=(user)=>{
        // console.log(name,email,password);

        fetch(`${API}/signup`,{
            //we can write whatever we are gonna send to backend here
            method:"POST",
            mode:'cors',
            headers:{
                "Content-Type": "application/json",
                "Access-Control-Allow-Origin": "*",
                "Access-Control-Request-Method": "*",
                Accept: "application/json",
            },
            body:JSON.stringify(user)
        })
        .then(response=>{
            return response.json()
        })
        .catch(err=>{
            console.log(err)
        });
    };

这是我来自网络的请求标头 ** 显示临时标题 接受:应用程序/json 访问控制允许来源:* 内容类型:应用程序/json DNT: 1 参考:http://localhost:3000/ sec-ch-ua: "谷歌浏览器";v="89", "Chromium";v="89", ";不是品牌";v="99" sec-ch-ua-mobile: ?0 用户代理:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 **

这是我的 APP.js,我最后添加了 cors 包,最后也实现了它,也看看它。

require('dotenv').config() //allows us to use the env variables in the main file.
const express =require('express'); //express is used to configure routes 
const mongoose=require('mongoose');
const morgan=require('morgan'); //used as middleware
const bodyParser=require('body-parser');
const cookieParser=require('cookie-parser');
const expressValidator=require('express-validator');
const cors=require('cors'); //providing a Connect/Express middleware that can be used to enable CORS with various options.

//import routes
const authRoutes=require('./Routes/Auth');
const userRoutes=require('./Routes/User');
const categoryRoutes=require('./Routes/Category');
const productRoutes=require('./Routes/Product');

//app
const app=express();


//db
mongoose.connect(process.env.DATABASE,{
    useNewUrlParser:true,
    UseCreateIndex:true
}).then(()=>console.log("Database Connected"));


//middleware
app.use(morgan('dev'));
app.use(bodyParser.json());
app.use(cookieParser());
app.use(expressValidator());
app.use(cors());


//routes
app.use("/api",authRoutes);
app.use("/api",userRoutes);
app.use("/api",categoryRoutes);
app.use("/api",productRoutes);


const port=process.env.PORT || 8000

app.listen(port,()=>{
    console.log(`Server is running on port ${port}`);
})

【问题讨论】:

    标签: node.js reactjs


    【解决方案1】:

    在跨域中,除非服务器支持 cors,否则客户端无法向该服务器发出请求。所以我们应该有服务器配置。-By @Vishnu

    尝试在标题中添加以下行

    Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"
    

    如果不起作用,请尝试在应用中使用 cors

    import cors from 'cors';
    app.use(cors);
    

    var app = express();
    app.use(function(req, res, next) {
      res.header("Access-Control-Allow-Origin", "*");
      res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
      next();
    });
    

    【讨论】:

    • 在跨域中,除非服务器支持 cors,否则客户端无法向该服务器发出请求。所以我们应该有上面@Syed所说的服务器配置。
    • 感谢毗湿奴的解释
    • 嘿,我对反应还很陌生...我是否正确添加了该部分?标头:{“Content-Type”:“application/json”,“Access-Control-Allow-Origin”:“”,“Access-Control-Request-Method”:“”,接受: "application/json", "Access-Control-Allow-Headers":"*", "Origin, X-Requested-With, Content-Type, Accept" },
    • 另外两种方法我都试过了,都没有用。
    • 过去你的app.js也
    猜你喜欢
    • 2019-09-09
    • 2016-11-27
    • 2022-06-16
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    • 2017-08-06
    • 2013-03-08
    • 1970-01-01
    相关资源
    最近更新 更多