2016-12-28 7 views
0

Я застрял на этом несколько часов без везения, поэтому решил, что я попрошу здесь.Предпусковой метод «ОПЦИИ» перед отправкой вместо «УДАЛИТЬ»

У меня есть служба с кучей конечных точек, большинство из которых принимают GET и POST http методы. В этом случае моя служба просто указывает Access-Control-Allow-Origin на * в заголовках ответов, если одно из моих приложений находится в другом домене/порту и хочет использовать эту услугу.

У меня есть один конечный пункт, который использует метод http: DELETE http, и я не могу заставить его работать. Когда я называю эту конечную точку из моего клиента приложения, я получаю это сообщение в моей консоли:

Response to preflight request doesn't pass access control check: 
No 'Access-Control-Allow-Origin' header is present on the requested resource. 

Я читал на CORS за последние пару часов и попробовал несколько различных вещей, все из которых имеет не работает. Я (думаю, я), по крайней мере, понимаю, что, когда я использую http-методы, отличные от GET и POST, браузер отправляет предварительно запрограммированный запрос с OPTIONS в качестве метода http.

Каков наилучший способ справиться с этим? Есть ли способ отключить этот предварительный запрос? Я указываю в своем клиентском приложении, что метод http для вызова этой конечной точки - DELETE. Должен ли я помещать что-то, определяющее заголовки в моей функции AJAX, которая вызывает эту конечную точку (я использую прямой JavaScript)?

Если я не могу найти способ обойти это, я просто хочу изменить свою конечную точку, чтобы использовать метод GET10 или POST, но я хотел найти способ справиться с этой проблемой, прежде чем я сделал легкий путь вне.

+0

Вы решили это? Вы добавляли заголовки на стороне сервера, как указано в ответе? – user3748908

ответ

1

я (думаю я) по крайней мере, понять, что, когда я использую, кроме GET и POST методы HTTP, браузер посылает предварительно маршевой запрос с OPTIONS как метод HTTP.

Да

Есть ли способ отключить эту предварительно скребками запрос?

Нет, нет. Он инициируется браузерами автоматически, без возможности отключить его от вашего JS. Пока вы отправляете DELETE запрос перекрестного происхождения в JS, браузеры сделают этот предполетный прогон.

Должен ли я помещать что-то, указывающее заголовки в мою функцию AJAX, которая вызывает эту конечную точку?

Учитывая «Нет„Access-Control-Allow-Origin“заголовок присутствует на запрошенный ресурс» сообщение вы получаете, не изменения, внесенные в код клиента не будет никакой разницы.

Место, куда нужно отправить больше заголовков для решения этой проблемы, на стороне сервера.

Если я не могу понять, как обойти это, я просто хочу, чтобы изменить конечную точку, чтобы использовать GET или POST методу

Вы можете экспериментировать с попытками что первый. Кажется, что даже если вы сделаете это изменение, вы все равно поймете, что «Нет заголовка« Access-Control-Allow-Origin »присутствует на запрошенном ресурсе».

Вопрос SO "No 'Access-Control-Allow-Origin' header is present on the requested resource" - это хорошее место для ознакомления с этим, чтобы лучше понять, что происходит.

Смежные вопросы