#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)
на самом деле проблема решена