Если ваш код внешнего интерфейса инициирует запрос кросс-источника и код, создающий запрос, на самом деле устанавливает заголовок Content-Type
в application/json
, то это обязательно заставит браузер выполнить предварительную проверку.Always.
Таким образом, в данном случае причина, по которой браузер не запускается для предварительной проверки, заключается в том, что заголовок фактически не добавляется в запрос, который браузер заканчивает отправкой..
Но конкретный случай, описанный в вопросе, является ... странным - потому что он пытается добавить заголовок Content-Type
к запросу GET
и запрос GET
ввопрос (как и почти все другие GET
запросы) не имеет тела запроса.
Итак, причина этого в том, что Angular для вызовов $http
автоматически делает что-товозможно, довольно умный (если он неожиданный): при отсутствии тела запроса он удаляет заголовок Content-Type
из запроса, что имеет некоторый смысл, потому что если тела запроса нет, нет необходимости иметь заголовок, указывающий еготип носителя.
См. принятый ответ на Угловой, тип контента не отправляется с $ http для подтверждения этого.
И поэтому, если по какой-то причине вам действительно нужно включить заголовок Content-Type
в запрос, не имеющий тела запроса, то решение состоит либо в том, чтобы вообще не использовать $http
в Angular, а вместо этого использовать, скажем,стандартный API Fetch, который позволит вам включить Content-Type
даже для запросов, в которых отсутствует тело запроса - или иначе (в случае, если у вас также есть какое-то требование использовать $http
Angular для передачи пустого тела запроса как частизапроса $http
(добавив data: ''
к запросу).