LINUX.ORG.RU

Angular $http

 , ,


0

1

Ребята выручите советом а то уже два дня борюсь с проблемой и никак не могу сделать, много чего перепробовал и все в пустую. Делаю GET запросы на API, на серверной части вместе с ответом отдаю заголовок $response->headers->set('Access-Control-Allow-Origin','http://myhost.loc'); и все работает. Но когда делаю запрос POST на ту же API и с ответом отдаю такой же заголовок, ну чтобы CORS работал, то получаю ошибку No 'Access-Control-Allow-Origin' header is present on the requested resource, и выходит сначала перед POST идет запрос OPTIONS, и в angular уже вписал вот такие строки: config(['$httpProvider', function($httpProvider) { $httpProvider.defaults.useXDomain = true; delete $httpProvider.defaults.headers.common['X-Requested-With']; } ]); Перелазил кучу страниц , перепробовал кучу решений и все в пустую.



Последнее исправление: Berdin (всего исправлений: 1)

а в чем вопрос-то? Сделай в nginx или что у тебя там ответ на OPTIONS с нужными тебе заголовками и все, не? Или вопрос не в этом?

Goganchic ★★
()
Ответ на: комментарий от Goganchic

Вопрос не в этом. С angular я отправляю то пост запрос, а почему-то идет OPTIONS, что совсем ни к чему , и в заголовках запроса такая вот вещь OPTIONS /app_dev.php/add HTTP/1.1 а должен то быть POST вместо OPTIONS, у апача сделал активированы моды rewrite, headers, allowmethods. К тому же в htaccess файл api , добавил вот такое:

<IfModule mod_headers.c> Header always set Access-Control-Allow-Origin: «*» Header always set Access-Control-Allow-Methods «OPTIONS, POST, GET, PUT, DELETE» Header always set Access-Control-Allow-Headers «origin, x-requested-with, content-type» </IfModule>

# CORS OPTIONS (add this too) RewriteCond %{REQUEST_METHOD} OPTIONS RewriteRule ^(.*)$ $1 [R=200,L]

Теперь выдает ошибку другую)

XMLHttpRequest cannot load http://api.host.loc/app_dev.php/add. Invalid HTTP status code 405

Berdin
() автор топика
Ответ на: комментарий от Goganchic

Не знаю каким чудом, но сделал)Так API у меня на symfony 2.5 то

add_post: path: /add defaults: {_controller: MyBundle:Post:add } methods: [OPTIONS,POST]

и в methods было только POST, а когда дописал туда OPTIONS - заработало без проблем.

Berdin
() автор топика
Ответ на: комментарий от Berdin

С angular я отправляю то пост запрос, а почему-то идет OPTIONS

Поди какая-то либа что-то там переопредила, и теперь перед запросом тестит сервер на то что он может. Добавь обработку метода OPTION по тому же урлу, отдавай в нём корс

Debasher ★★★★★
()
Ответ на: комментарий от Debasher

да какая либа, вы чего, это стандартное поведение всех браузеров при post cors: сначала кидается options а потом нужный запрос

Goganchic ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.