Добавление заголовка CORS к http-запросу с помощью Ajax

#javascript #php #jquery #laravel

#javascript #jquery #ajax #остальное #http

Вопрос:

Я разработал Restfull приложение, и я хотел бы добавить другое веб-приложение для использования его сервисов, поэтому я делаю этот вызов Ajax :

  $.ajax({
            type: "Post",
            async: false,
            url: "ip_adress/Inviter/api/Account/Register",
            data: donne,
            headers: {  "Access-Control-Allow-Origin:": "*"},
            success: function (data) {
                console.log(data);
                var tab = [];
                tab["username"] = username;
                tab["password"] = pwd;
                var isLogged = Login.CheckCredential(tab, username);
                return isLogged;
            },
            error: function (xhr, status, error) {
                console.log(xhr);
                console.log(status);
                console.log(error);
            }

        });
 

Я получаю это исключение :

Объект {readyState: 0, status: 0, statusText: «Ошибка синтаксиса: не удалось выполнить ‘setRequestHeader’ …-Origin:‘ недопустимое имя поля заголовка HTTP.»} ошибка DOMException: не удалось выполнить ‘setRequestHeader’ на ‘XMLHttpRequest’: ‘Access-Control-Allow-Origin:‘ не является допустимым именем поля заголовка HTTP.

Итак, мне нужно знать :

  • Как я могу включить CORS в этой ситуации?
  • Как я могу исправить свой код?

Комментарии:

1. Серверу необходимо установить заголовок, поскольку сервер решает, кому разрешен доступ и откуда. Итак, ответ на ваш первый вопрос: добавьте заголовок на свой сервер. Это должно сделать ваш второй вопрос устаревшим.

2. Access-Control-Allow-Origin это заголовок http-ответа, возвращаемый сервером. См . developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS за подробностями.

Ответ №1:

Вы не можете авторизовать себя таким образом. Это заголовок ответа; подробности в спецификации. Сервер, на который вы отправляете запрос, должен отправить этот заголовок обратно, чтобы браузер знал, что можно разрешить вашей странице отправлять ajax-запрос на этот сервер. Вы ничего не сможете сделать в своем клиентском коде, если сервер, с которого вы пытаетесь запросить, не разрешает ваш источник.

Ответ №2:

каким-то образом я перенаправился на этот вопрос, чтобы получить решение для моего приложения Flask. Поскольку сервер должен отправить ответ обратно в заголовок, CORS должен быть установлен на стороне сервера. В моем случае я пытался отправить запрос из

клиент http://127.0.0.1:8081 /

Для

сервер http://127.0.0.1:5051

Итак, я установил политику cors, чтобы разрешить происхождение на стороне клиента

 headers: {  "Access-Control-Allow-Origin:": "*"},
 

а для серверной части flask предоставляет библиотеку, позволяющую cors

 from flask_cors import CORS
app = Flask(__name__)

CORS(app)
 

на самом деле проблема решена