Я искал ответы на этот вопрос в течение нескольких часов, но не добился никакого прогресса. Это кажется довольно простым, но я не могу в этом разобраться.
Проблема в том, что у меня есть приложение CRUD Angular, которое вызывает несколько разных PHP-скриптов, размещенных на сервере Apache. Скрипты, получающие список записей, получение одной записи или удаление записи с помощью запроса GET, работают нормально. Но как только я использую POST для сценария для обновления записи или создания новой записи, я получаю ошибку CORS. Я могу вызвать тот же сценарий с помощью POST в POSTMAN, чтобы знать, что вызов в порядке. Да, я понимаю, что CORS — это браузерная штука. Пробовал и Фаерфокс и Хром. Моя среда разработки работает в Windows.
Обычно я читал предложение убедиться, что на сервере имеется следующее (и да, я знаю, что это угроза безопасности... просто пытаюсь разработать и протестировать перед развертыванием):
Заголовок всегда устанавливает Access-Control-Allow-Origin "*" Это работает и устранило проблему, которая изначально возникала при вызове скриптов из Angular. Итак, я знаю, что директива существует и работает. Это исправило мои запросы GET. Но, похоже, это не влияет на POST. Мое приложение Angular работает на http://localhost:4200, адрес сервера — 10.0.10.141:4088. Я также попробовал добавить в Apache следующее:
В заголовке всегда устанавливаются методы контроля доступа «POST, GET, OPTIONS» В заголовке всегда устанавливаются заголовки Access-Control-Allow-Headers «Origin, X-Requested-With, Content-Type, Accept». Это не помогло. Затем я попытался удалить директивы заголовков из Apache и вместо этого добавить их в сценарии PHP. Опять же, запросы GET работали нормально, но сценарий, вызванный POST, завершается сбоем.
Я участвую: Угловой интерфейс командной строки: 15.2.6 Узел: 18.17.1 Менеджер пакетов: npm 9.1.2 ОС: Win32 x64
PHP – 8.2.10
Подробности о неудачном вызове:

Я предполагаю, что мне не хватает чего-то простого и легкого, но все поиски по этой проблеме дают много результатов, но предложения — это то, что я уже пробовал. У меня есть код для фактического HTTP-вызова:
const headers = new HttpHeaders({'Cache-Control':'no-cache', "Content-Type": "application/json"}); верните this.http.post(this.uri+'DB_merge.php?',custobj,{'headers':headers}) .subscribe((res) => { console.log("опубликовано"); }); Буду очень признателен за пару советов, которые помогут решить эту проблему. Тот факт, что это влияет только на POST, меня сбил с толку. Возможно, я не понимаю различий между GET и POST, поэтому упускаю что-то тонкое.
Пит