вызов URL-адреса Https на HTTP-запросе angularjs

У меня есть URL-адрес HTTPS, и я хочу отправить запрос на получение данных с этого URL-адреса, сценарий 1: из моего браузера Если я нажму URL-адрес i получить ответ, тогда как из моего приложения Angularjs я всегда получаю ошибку 401, но если я попаду в API из браузера, я всегда получаю правильный ответ

по соображениям безопасности я не мог использовать URL здесь, но я хочу:

  $http({
        method: "GET",
        url: "https://urlAdresss/",
        headers: {
            "Accept-Language": "en-US, en;q=0.8",
            "Content-Type": "application/json;charset=UTF-8"
        },
    }).then(function (_response) {
        console.log(_response
     }

Я всегда получаю несанкционированный доступ, я в сети, а также на консоли, любая помощь будет принята с благодарностью,

но если я нажму тот же URL-адрес из браузера, я получу ответ. Это означает, что серверная часть работает нормально

Я думаю, что мне что-то не хватает в моем запросе на получение, поэтому я получаю ошибку


person Kumail Hussain    schedule 17.12.2017    source источник
comment
Возможная проблема с CORS? API и angular работают на разных хостах?   -  person lzagkaretos    schedule 17.12.2017
comment
API @lzagkaretos находится на сервере. Я пытаюсь подключиться к API с локального хоста, может быть проблема?   -  person Kumail Hussain    schedule 17.12.2017
comment
Это очень вероятно. Пожалуйста, проверьте консоль браузера и вкладку сети для получения дополнительной информации.   -  person lzagkaretos    schedule 17.12.2017
comment
он всегда говорит, что неавторизованный, но если я ввожу URL-адрес в браузере, он возвращает данные :-(   -  person Kumail Hussain    schedule 17.12.2017
comment
Вы проверяли консоль браузера (F12) на наличие чего-то вроде Access-Control-Allow-Origin отсутствующего заголовка или подобных вещей? Разумеется, через локальный хост.   -  person lzagkaretos    schedule 17.12.2017
comment
да, но получаю только то же самое, что я упомянул   -  person Kumail Hussain    schedule 17.12.2017
comment
Не могли бы вы указать конкретный URL? Если он доступен в открытом доступе, конечно.   -  person lzagkaretos    schedule 17.12.2017
comment
Давайте продолжим обсуждение в чате.   -  person Kumail Hussain    schedule 17.12.2017
comment
@lzagkaretos, пожалуйста, смотрите чат   -  person Kumail Hussain    schedule 17.12.2017


Ответы (1)


Кажется, это проблема CORS (обмен ресурсами между источниками).

На стороне AngularJS вы должны использовать следующую конфигурацию, чтобы служба $http автоматически отправляла заголовки авторизации в HTTP-запросы.

var app = angular.module('app', [])
    .config(function($httpProvider) {
        $httpProvider.defaults.useXDomain = true;
        $httpProvider.defaults.withCredentials = true;
    });

А в бэкенде вы должны указать явно разрешенные источники (например, http://localhost:8888).
Также обратите внимание на некоторые моменты из здесь.

Если вы хотите разрешить учетные данные, ваш Access-Control-Allow-Origin не должен использовать *.

person lzagkaretos    schedule 17.12.2017