2015-09-27 1 views
1

Я новичок в angularjs, и я пытаюсь добавить некоторые новые функции для существующий угловой js app. Все существующие вызовы завернуты в сложную логику, поэтому я подумал, что позвоню напрямую. Вот код для моего звонка:

code for my new call

Когда существующие вызовы выполняются на апи из angularjs кода они работают и имеют следующие заголовки в верхней части изображения ниже (с пометкой «работает» в красный текст). Мой новый вызов добавляет Access-Control-Request-Headers и Access-Control-Request-Method, как в нижней части изображения ниже (помечен как «Fails» в красном тексте).

success and failing calls

Когда я смотрю в консоли Chrome я вижу следующее сообщение об ошибке для моего нового запроса: XMLHttpRequest не может загрузить http://localhost/blablabla/v1/login.json. Поле заголовка запроса. Разрешения Access-Control-Allow-Headers разрешены.

Мне также не хватает «application/json» и «text/plain» из заголовка «Accept» в запросе. Как я могу добавить их в «Принять», а также избавиться от «Access-Control-Request-Headers» и «Access-Control-Request-Method»?

+0

Не можете ли вы немного подражать «сложной логике», которую вы упомянули, чтобы проверить, как это делается? Даже если вы заработаете imho, вы должны следовать существующим стандартам в приложении, которое вы пытаетесь расширить. –

ответ

0

Вы можете найти пример настройки $ параметров запроса HTTP ниже:

var request = { 
    method: 'POST', 
    url: 'http://example.com', 
    headers: { 
    'Accept': 'application/json' 
    }, 
    data: { test: 'test' } 
} 

$http(request).then(function(){...}, function(){...}); 
0

Я также не хватает «приложения/JSON» и «текст/равнина» от «Accept» заголовок в запросе. Как я могу добавить их в «Принять»

Браузер делает preflight OPTIONS request. Вы должны ожидать увидеть желаемый заголовок, когда впоследствии он сделает запрос GET, получивший разрешение от сервера, чтобы сделать это.

(Ваша реальная проблема, скорее всего, что вы не настроили сервер, чтобы должным образом реагировать на предполетной запрос.)

, а также избавиться от «Access-Control-request- Заголовки "и" Метод контроля доступа-запроса "?

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

+0

Другие вызовы из одного приложения позволяют называть webapi fine. Таким образом, сервер не будет проблемой. Единственное различие между моим новым звонком и рабочими вызовами - это то, что я указал. Мне нужно изменить мой вызов, чтобы он напоминал другие вызовы. – DotNetGuy

+0

@DotNetGuy - Разница в том, что вы настраиваете заголовки запросов ... что-то, что может вызвать запрос предполетной проверки. Другие вызовы инициируют предполетные запросы? – Quentin

+0

Я также попытался отправить запрос на получение без указания заголовков (т. Е. Без передачи в config var). Таким образом, запрос $ http.get имел только указанные 2 параметра, URL-адрес и параметры json-объекта. это привело к той же ошибке. Другой вызов от приложения angularjs также использует $ http.получить, но не передавать «Access-Control-Request-Headers» и «Access-Control-Request-Method», но передавать «application/json» и «text/plain» в заголовке «Accept» (который мой вызов делает не). – DotNetGuy

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