Нет заголовка «Access-Control-Allow-Origin» с помощью angular + WordPress - PullRequest
0 голосов
/ 08 июля 2019

enter image description here когда я публикую данные методом POST в API woocommerce. у меня проблема с корсом

Доступ к выборке в 'http://localhost/wordpress/wc-api/v3/customers?oauth_consumer_key=ck_64d88e1fa3516e9f5a06b6053f02976a534d3f8f&oauth_nonce=zsu3ysEnFHhvrZt4Nc7H66Dgu28H20K7&oauth_signature_method=HMAC-SHA256&oauth_timestamp=1562587817&oauth_version=1.0&oauth_signature=KtFxvyQNklUlfCi6rNWyJ0DEJ6AS2ZbwbO44u%2FEqxG4%3D' из источника' http://localhost:8100' заблокирован политикой CORS: Ответ на предпечатный запрос не проходит проверку контроля доступа: не имеет статуса HTTP ok.

1 Ответ

0 голосов
/ 08 июля 2019

Вы должны установить заголовок Access-Control-Allow-Origin при каждом запросе к серверу, если ваш сервер находится в другом домене, чем приложение, в котором вы делаете эти запросы (сервер устанавливает его в качестве заголовка ответа).Добавление этого заголовка говорит системе, что внешнему домену «localhost: 8100» разрешено делать эти запросы.

Вы не можете обойти это требование в ванильных браузерах, потому что это встроенная функция безопасности для уменьшения атак CORS

PS.разные порты в одном домене считаются разными доменами.Таким образом, example.com получит ошибку 401, если вы делаете запрос на example.com:8100.То же самое касается localhost или любого другого домена.

Пример кода из файла .conf веб-сервера Apache2, который я лично использую для установки этих заголовков.

SetEnvIf Origin "^http(s)?://(.+\.)?(staging.\xxx\.com|xxx\.com|xxx\.local|xxx\.local:4200|a2\.local)$" origin_is=$0
Header always set Access-Control-Allow-Origin %{origin_is}e env=origin_is

Просто замените xxx.com домены с localhost: 8100 или что-то еще, что вам нужно в этом массиве.(если вы используете веб-сервер Apache)

В результате на вкладке сети Chrome должен быть заголовок Access-Control-Allow-Origin при прикрепленном к запросу

enter image description here

...