Заблокировано политикой CORS: поле заголовка запроса access-control-allow-origin не разрешено - PullRequest
1 голос
/ 15 февраля 2020

У меня есть приложение Node JS, которое действует как сервер и обрабатывает данные посредством POST запроса и работает на другом порту. С другой стороны, у меня есть другое веб-приложение jQuery, которое действует как клиент и отправляет почтовый запрос в приложение Node JS.

Когда я пытаюсь отправить данные от клиента jQuery, выдается ошибка, как показано ниже

Access to XMLHttpRequest at 'http://localhost:3000/data' from origin 'http://localhost:8080' has been blocked by CORS policy: Request header field access-control-allow-origin is not allowed by Access-Control-Allow-Headers in preflight response

Ниже мой Node JS и я добавил любой домен для доступа к Node JS приложению

// Starting the App Server on Port 3000
app.listen(3000, function() {
console.log("Server running on port http://localhost:3000");
});

// set headers for allowing cross domain access
//Add headers
app.use(function (req, res, next) {

    // Website you wish to allow to connect
    res.setHeader('Access-Control-Allow-Origin', '*');

    // Request methods you wish to allow
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');

    // Request headers you wish to allow
    res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');

    // Set to true if you need the website to include cookies in the requests sent
    // to the API (e.g. in case you use sessions)
    res.setHeader('Access-Control-Allow-Credentials', true);

    // Pass to next layer of middleware
    next();
});

Мой клиент jquery выглядит так, как показано ниже, который отправляет данные в Node JS

$(document).ready(function(){
      $("button").click(function(){
console.log(" Entered inside click ");



$.ajax({
    contentType: 'application/json',
    data: '{"data":"<div>Some raw data pushed to node url</div>"}',
    dataType: 'json',
    success: function(data){
        console.log(" Data Received ");
        $("#content").append("Data received");
    },
    error: function(){
        console.log(" Error while connecting for data");
    },
    processData: false,
    type: 'POST',
    url: 'http://localhost:3000/data',
    headers: {
        "accept": "application/json",
        "Access-Control-Allow-Origin":"*"
    }
});

Ответы [ 2 ]

2 голосов
/ 15 февраля 2020

Вы можете использовать библиотеку CORS. Это обычное место, чтобы увидеть промежуточное ПО, установленное выше app.use(function (req, res, next) {

var express = require('express')
var cors = require('cors')
var app = express()

app.use(cors())

https://www.npmjs.com/package/cors

0 голосов
/ 15 февраля 2020

Вам необходимо удалить заголовок Access-Control-Allow-Origin из запроса. Заголовок должен быть включен только в ответ. Мне кажется, так как его нет в списке разрешенных заголовков , и вы не разрешаете его в своем приложении Node, это вызывает проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...