簡體   English   中英

發出發布請求時出現 NodeJS CORS 錯誤

[英]NodeJS CORS error when making a post request

我有一個 node js 應用程序,我將表單數據從客戶端轉發到服務器,以將這些數據存儲在 mongoDB 中。

要將數據發送到服務器,我使用帶有 API_URL 的 POST 請求: http://localhost/mews

每當執行 POST 請求時,我都會在客戶端的控制台中看到 CORS 錯誤。

客戶端JS

const API_URL = "http://localhost/mews";

form.addEventListener('submit', async (event) => {
    event.preventDefault();

    const formData = new FormData(form);
    //Grab the form values
    const name = formData.get('name');
    const content = formData.get('content');

    const mew = {
        name,
        content
    }

    //send the mew information to the server
    const response = await fetch(API_URL, {
        method: "POST",
        body: JSON.stringify(mew),
        headers: {
            'Content-Type': 'application/json'
        }
    });
    const json = await response.json();
    console.log(json);

});

服務器端JS

const express = require('express');
const cors = require('cors');
const db = require('monk')('localhost/meower');
const mewe = db.get('mews');

var corsOptions = {
    origin: 'http://localhost/mews',
    optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
} 


const app = express();
app.use(cors(corsOptions));
app.use(express.json());

function isValidMew(mew) {
    return mew.name && mew.name.toString().trim() !== '' &&
        mew.content && mew.content.toString().trim() !== '';
}

//chen user sends a message (POST)
app.post('/mews', async (req, res) => {

    if (isValidMew(req.body)) {

        const mew = {
            name: req.body.name.toString(),
            content: req.body.content.toString(),
            created: new Date()
        };

        console.log(mew);

        const createdMew = await mewe.insert(mew);
        res.json(createdMew);

    } else {
        res.status(422);
        res.json({
            message: 'Hey! Name and Content are required!'
        });
    }
});

app.listen(4000, () => {
    console.log("Listening on http://localhost:4000/");
});

發出發布請求時客戶端控制台中的錯誤

Cross-Origin Request Blocked: The Same Origin Policy does not allow reading of the remote resource at http: // localhost / mews. (Reason: CORS request was unsuccessful).

Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.

這對我有用“cors”:“2.8.5”

const express = require('express');
const cors = require('cors');
const db = require('monk')('localhost/meower');
const mewe = db.get('mews');

const app = express();
app.use(express.json());
app.use(cors());

希望它也能幫助你,參考在這里https://www.npmjs.com/package/cors

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM