Перекрестный запрос заблокирован во время отправки почтового запроса - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть 2 сервера и 2 домена. Я хочу отправить запрос на публикацию из одного домена в другой, но мой браузер показывает ошибку

доступ к XMLHttpRequest по адресу https://example.com' от источника'https://www.example2.com' заблокировано политикой CORS: Ответ на запрос предварительной проверки не проходит проверку контроля доступа: значение заголовка «Access-Control-Allow-Origin» в ответе не должно быть подстановочным знаком »*'когда режим учетных данных запроса' включить '.Режим учетных данных запросов, инициируемых XMLHttpRequest, контролируется атрибутом withCredentials.

код JavaScript, который я использую для отправки данных поста:

<script>
var data = JSON.stringify({
  "key": "value sent"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});
xhr.open("POST", "https://example.com");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
</script>

Так что мой вопрос: какЯ могу решить эту проблему и отправить запрос Post на другой домен и какой метод использовать для отправки запроса Post

Ответы [ 2 ]

0 голосов
/ 07 декабря 2018

Вы можете достичь этого, просто изменив Access-Control-Allow-Origin с подстановочного знака на https://www.example2.com, и он будет решен.

Access-Control-Allow-Origin: https://www.example2.com

этот междоменный запрос CORS является безопасностью, используемой веб-сайтами для предотвращения несанкционированного доступа с использованием JavaScript и добавления заголовков.решить проблему.

0 голосов
/ 03 декабря 2018

Вам необходимо включить CORS на вашем сервере.В случае с NodJ вы можете сделать что-то вроде этого:

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();
});

app.post('/', function(req, res, next) {
  // request from other domain will work here
});

в браузере

function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    xhr.open(method, url, true);
  } else if (typeof XDomainRequest != "undefined") {
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    xhr = null;
  }
  return xhr;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...