Web Api: Symfony 2 или 3 и угловой ответ на предпечатную проверку имеют недопустимый код состояния HTTP 403

Эта проблема не вызвана angular, проблема заключается в конфигурации пакета nelmioCors, который не разрешает POST-запрос к вашему API должным образом.

Если вы столкнулись с этой проблемой, вероятно, у вас есть NelmioCorsBundle в вашем проекте Symfony добавить заголовки cors, иначе вы получите ошибку перекрестного источника.

Чтобы решить это, измените allow_headers Свойство пути к вашему API для:

nelmio_cors:
defaults:
allow_credentials: false
allow_origin: []
allow_headers: []
allow_methods: []
expose_headers: []
max_age: 0
hosts: []
origin_regex: false
paths:
# Important api settings :
# Access-Control-Request-Method
'^/api/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth','Content-Type','X-Requested-With','accept','Origin','Access-Control-Request-Method','Access-Control-Request-Headers','Authorization']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/oauth/':
allow_origin: ['*']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
'^/':
origin_regex: true
allow_origin: ['^http://localhost:[0-9]+']
allow_headers: ['X-Custom-Auth']
allow_methods: ['POST', 'PUT', 'GET', 'DELETE']
max_age: 3600
hosts: ['^api\.']

allow_origin и allow_headers могут быть установлены на * для принятия любого значения, однако разрешенные методы должны быть явно указаны. пути должны содержать хотя бы один элемент.

Примечание. Если вы разрешите методы POST и включите переопределение методов HTTP в платформе, это позволит пользователям API также выполнять запросы PUT и DELETE.

Тогда ваш запрос может быть выполнен без каких-либо проблем:

$http.post('https://yoururl/api/user', {'userName': 'admin', 'password': 'test'}, {headers: {'Accept': 'application/json', 'Content-Type': 'application/json'}}).then(function success(response) {
console.log(response);
});
Ссылка на основную публикацию
Adblock
detector