Приложение Angular, вызывающее PHP-скрипт, имеет сбой CORS только при POSTPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Гость
 Приложение Angular, вызывающее PHP-скрипт, имеет сбой CORS только при POST

Сообщение Гость »


Я искал ответы на этот вопрос в течение нескольких часов, но не добился никакого прогресса. Это кажется довольно простым, но я не могу в этом разобраться.

Проблема в том, что у меня есть приложение 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, поэтому упускаю что-то тонкое.

Пит
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»