У меня есть приложение Angular 5, которое подключается к PHP API, все работало нормально при тестировании в локальной среде (Ubuntu 16.04, Apache2 2.4.18, PHP 7.2.2), но когда я развернул проект на своем школьном сервере (Uubuntu, Apache2 2.4) .27, PHP 7.1.11), запросы GET в порядке, но запросы POST превращаются в запросы OPTIONS, и Angular отображает ошибку.
ОШИБКА Объект {_body: ошибка, статус: 0, ОК: ложь, текст состояния: «»,
заголовки: {…}, тип: 3, URL: ноль}Запрос от источника заблокирован для загрузки Cross-Origin
Политика совместного использования ресурсов: заголовок «Access-Control-Allow-Origin» отсутствует
присутствует на запрашиваемом ресурсе.
Я уже проверил API с Почтальоном, и все работает.
Вот код DataService
constructor(public http:Http) {
this.url = 'http://10.50.67.83/usuario1/Autozone/';
this.headers = new Headers();
this.headers.append('Content-Type', 'application/json');
}
postRequisition(client:string, cart:Selected[]) {
let data:Data;
data = {client: client, cart: cart};
return this.http.post(
this.url + 'api/requisitions/create.php',
JSON.stringify(data),
{
method: 'POST',
headers: this.headers
}).map(res => res.json());
}
Я добавил заголовок ContentType, потому что я публикую JSON.
Это заголовки, включенные в файл php.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Allow-Headers: Content-Type");
header("Content-Type: application/json; charset=UTF-8");
header("Accept: application/json;");
Задача ещё не решена.
Других решений пока нет …