Версия, подходяща за принтиране
Кликни тук, за да видиш темата в оригиналният и вид
BG Development Форуми > Други > Angular Request и CORS проблем


Публикувано от: emagi 02-04-2021, 12:26
Какво се опитвам да направя: чрез PHP искам да създам Rest API:
QUOTE
.../v1/regions/{regionid}/places

Чрез .htaccess редиректвам към сайта places.php?regionid={regionid} със следния код:
CODE
RedirectMatch 301 ^(.*?)\/v\d+\/regions\/([0-9]+)\/(.*?)$ $1/$3?regionid=$2

Ако чрез браузъра извикам
QUOTE
http://localhost/v1/regions/12/places
бивам пренасочен към http://localhost/v1/places?regionid=12
Обаче, ако чрез Angular 10 и httpClient направя request , получавам CORS проблем
QUOTE
Cross-Origin Resource Sharing error: MissingAllowOriginHeader

Backend PHP
Структура на проекта: root директория и в нея файла places.php
Places.php
CODE
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: OPTIONS,GET,POST,PUT,DELETE");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With, origin");
.............................
............................


Fronend:
Angular 10
src -> proxy.conf.json

CODE
{
 "/v1/*": {
   "target": "http://localhost",
   "secure": false,
   "logLevel": "debug"
 }
}


Request:

CODE

     headersLocal = new HttpHeaders({'Access-Control-Allow-Origin': '*'});
     return this.httpClient.get<T>(this.basePath + resourcePath, { headers : headersLocal, params: httpParams});


Идеи?

Публикувано от: relax4o 03-04-2021, 15:29
Access-Control-Allow-Origin хедъра е response header. Не е нужно да го изпращаш със заявката.

Получаваш ли нужните хедъри от сървъра? Инспектирай в devtools-а и виж хедърите, които сървъра ти връща дали съдържа Access-Control-Allow-Origin-а, който си задал. Ако не, значи някъде response-а ти бива променен.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)