亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Express Router 端點的 CORS 問題

Express Router 端點的 CORS 問題

喵喔喔 2022-06-16 10:10:00
我有一個反應應用程序,它正在對一個快速節點服務器進行 REST。快速路由器定義了一堆休息端點。當我使用郵遞員點擊快速路由器中的端點時,它工作正常。當我用我的反應應用程序到達端點時,它沒有。當我的反應應用程序使用 axios 進行調用時,我看到 400 錯誤。這就是我的 index.js 的樣子:const express = require("express");const mongoose = require("mongoose");const bodyParser = require("body-parser");const passport = require("passport");const cors = require("cors");const app = express();app.use(bodyParser.urlencoded({ extended: false }));// server.use(bodyParser.json());app.use(cors());// app.options("*", cors());const UserModel = require("./models/User");mongoose  .connect(    "mongodb"  )  .then(() => console.log("SUCESSFULLY connected to MongoDB!"))  .catch((error) => console.log(`FAILED tot connect to MongoDB: ${error}`));require("./auth/localStrategyAuth");const authRoutes = require("./routes/authRoutes");app.use("/v1", authRoutes);// app.post("/", (req, res) => {//   res.send("Hello World!");// });// app.post("/v1/signup", (req, res) => {//   console.log("lol");// });// app.use(express.json());const PORT = 5000;app.listen(PORT, () =>  console.log(`ui-rest listening on port localhost:${PORT}`));用戶.jsconst mongoose = require("mongoose");const bcrypt = require("bcrypt");const { Schema } = mongoose;const UserSchema = new Schema({  email: {    type: String,    required: true,    unique: true,  },  password: {    type: String,    required: true,  },});const UserModel = mongoose.model("user", UserSchema);module.exports = UserModel;authRoutes.jsconst express = require("express");const passport = require("passport");const jwt = require("jsonwebtoken");const JWTstrategy = require("passport-jwt").Strategy;//We use this to extract the JWT sent by the userconst ExtractJWT = require("passport-jwt").ExtractJwt;const router = express.Router();
查看完整描述

3 回答

?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

400 表示請求錯誤,您的問題與 cors 無關。您沒有設置您的 api 來處理響應發送的 JSON 數據,因此它無法讀取您的 request.body 并給出 400-Bad Request。

所以你需要添加這一行:

app.use(bodyParser.json());

同樣在當前版本的 express 中,body parser 不是必需的,它帶有 express。所以你可以像這樣使用它:

app.use(express.json());

它與郵遞員合作的原因是您以 x-www-form-urlencoded 發送數據。

http://img1.sycdn.imooc.com//62aa91210001f4bd09710485.jpg

查看完整回答
反對 回復 2022-06-16
?
翻過高山走不出你

TA貢獻1875條經驗 獲得超3個贊

您可以使用檢查我的代碼是否有 cors 錯誤。


const express = require('express');

var mongoose = require('mongoose');

const bodyParser = require('body-parser');

var morgan = require('morgan');

var cors = require('cors')

const app = express();


// CORS Middleware

app.use(cors());

// Logger Middleware

app.use(morgan('dev'));

// Bodyparser Middleware

app.use(bodyParser.json());



const MongoClient = require('mongodb').MongoClient;

const uri = "uri";

const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true });

client.connect(err => {

  console.log('MongoDB Connected...')

  const collection = client.db("dbname").collection("collectionname");


  app.post('/name', (req, res) => {

    collection. insertOne({ name: req.body.name })

    res.send("data added")

  });


});


const port = process.env.PORT || 5000;


app.listen(port, function () {

  console.log(`Example app listening on port ${port}`);

});


查看完整回答
反對 回復 2022-06-16
?
郎朗坤

TA貢獻1921條經驗 獲得超9個贊

您需要將 cors 中間件注冊到 express 應用程序中。


const express = require("express");

const bodyParser = require("body-parser");

const cors = require("cors");

const app = express();


app.use(cors());


app.post("/", (req, res) => {

  res.send("Hello World!");

});


const PORT = 5000;

app.listen(PORT, () => console.log(`listening on port localhost:${PORT}`)


查看完整回答
反對 回復 2022-06-16
  • 3 回答
  • 0 關注
  • 165 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號