Токен JWT с ошибкой jQuery Ajax

Я пытаюсь вызвать API (localhost) с JWT с использованием Ajax, но я получаю сообщение об ошибке я пробовал следующее

$.ajax({

    url:'http://localhost:50298/api/Validate', 
        Method :'GET',
        dataType: 'json',
          beforeSend : function(xhr) {
            xhr.setRequestHeader("Accept", "application/json");
            xhr.setRequestHeader("Content-Type", "application/json");
            xhr.setRequestHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjE1Njg0NDgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAyOTgvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1MDI5OC8ifQ._HLLwRXoZksBSICPHQlLd-0r_uJJN_kmw2p78XOBfmw");
        },
        success: function (result) 
        { 
            console.info(result)
        },

        error: function Failed(result)
        { 
            console.info(result) 
        }, 

ответ 404 - не найдено

и заголовки запроса

OPTIONS /api/Validate HTTP/1.1
Host: localhost:50298
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: null
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36
Access-Control-Request-Headers: authorization,content-type
Accept: */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-GB,en-US;q=0.9,en;q=0.8

я тоже пробовал следующее

var settings = {
  "async": true,
  "crossDomain": true,
  "url": "http://localhost:50298/api/Validate",
  "method": "GET",
  "headers": {
    "Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjE1NjMyMTcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAyOTgvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1MDI5OC8ifQ.acp7NbeLt4LbaBevqeNa3z-BJQ-Xrej6-covNWLZcQQ",
    "Cache-Control": "no-cache",

  }
}

$.ajax(settings).done(function (response) {
  console.info(response);
});

но все равно появляется та же ошибка 404 not found

если я удалю

xhr.setRequestHeader("Authorization", "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjE1Njg0NDgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAyOTgvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1MDI5OC8ifQ._HLLwRXoZksBSICPHQlLd-0r_uJJN_kmw2p78XOBfmw");

или же

 "headers": {
"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjE1NjMyMTcsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAyOTgvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1MDI5OC8ifQ.acp7NbeLt4LbaBevqeNa3z-BJQ-Xrej6-covNWLZcQQ",
"Cache-Control": "no-cache",

}

Я получаю ошибку 401 Unauthorized, и это правильно.

API - это .NET Core 2, он был протестирован с помощью Post Man, и с API нет никаких проблем.

P.S. Я использую расширение Chrome CORS для запуска своего JS

любая помощь будет приветствоваться для решения этой проблемы

Может у вас проблема с маршрутизацией. Предлагаю вам это проверить.

L. Ivicz 21.03.2018 08:53

нет проблем с маршрутизацией, маршрут задается в контроллере, например: [Produces ("application / json")] [Route ("api / Token")], и я могу вызвать API с помощью post man

Reza Del 21.03.2018 10:35
Как конвертировать HTML в PDF с помощью jsPDF
Как конвертировать HTML в PDF с помощью jsPDF
В этой статье мы рассмотрим, как конвертировать HTML в PDF с помощью jsPDF. Здесь мы узнаем, как конвертировать HTML в PDF с помощью javascript.
1
2
1 590
2

Ответы 2

Не могли бы вы попробовать вот так? Проверить, работает ли?

$.ajax({
    url: 'http://localhost:50298/api/Validate',
    headers: {
        'Accept':'application/json',
        'Content-Type':'application/json',
        'Authorization':'Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjE1Njg0NDgsImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6NTAyOTgvIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo1MDI5OC8ifQ._HLLwRXoZksBSICPHQlLd-0r_uJJN_kmw2p78XOBfmw'
    },
    method: 'GET',
    dataType: 'json',
    success: function(data){
      console.info('succes: '+data);
    }
  });

Это работает для меня каждый раз. Надеюсь, это сработает для вас.

Привет, я пробовал и все еще получаю 404, это заголовок запроса, который я возвращаю ---- Accept: * / * Accept-Encoding: gzip, deflate, br Accept-Language: en-GB, en-US; q = 0.9 , en; q = 0.8 Access-Control-Request-Headers: авторизация, тип содержимого Access-Control-Request-Method: GET Connection: keep-alive Хост: localhost: 50298 Источник: null User-Agent: Mozilla / 5.0 (Windows NT 10.0; Win64; x64) AppleWebKit / 537.36 (KHTML, как Gecko) Chrome / 64.0.3282.186 Safari / 537.36

Reza Del 20.03.2018 17:15

В моем случае я использовал 404 Не Найдено при вызове веб-API от клиента, который является методом с атрибутом аутентификации. После того, как я реализовал сервер только с JWT без аутентификации Identity, и эта ошибка исчезла, но на этот раз она дала мне Ошибка 401, поэтому я заметил, что, если у вас есть знания о полезной нагрузке, такие как аудитория эмитента и т. д. Вы должны добавить это содержимое в существующий заголовок запроса, иначе он не сможет понять, кто вызывает api и не дает разрешения на использование. В конце моя клиентская функция-потребитель преобразовалась, как показано ниже:

    request.post('https://localhost:44557/api/controller1/method1')
        .set('Authorization', 'Bearer '+ pgtoken.toString())
        .set('Accept', 'application/json')
        .set('Content-Type', 'application/json')
        .set('issuer', 'west-world.xxxxx.com')
        .set('Audience', 'yyyyy.xxxxxx.com')
        .send({ key: value, 
                key2: value2//etc...
        })
        .end(function(err, res){
            localStorage.setItem("result: ", res.text); 
        }
    );  

Другие вопросы по теме