переписать AJAX вызов Angular - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь переписать Ajax вызов в Angular. Но получение всегда 401 Несанкционировано. Когда я запускаю вызов Ajax, он работает отлично. Любая идея, как я могу преобразовать его в запрос Angular http? Спасибо ...

send(project) {
        let self = this;
        self.tasksURI = 'http://xxxx:xxxx/xx/xx/' + project + '/_apis/build/builds'
        self.PAT = 'xxxxxxxxxxxxxxxxxxxxx'
        self.ajax = function (uri, method, data) {
            var request = {
                url: uri,
                type: method,
                contentType: "application/json",
                accepts: "application/json",
                cache: false,
                dataType: 'json',
                data: JSON.stringify(data),
                beforeSend: function (xhr) {
                    xhr.setRequestHeader("Authorization", "Basic " + btoa("" + ":" + "xxxxxxxxxx"));
                },
                error: function (jqXHR) {
                    console.log("ajax error " + jqXHR);
                }
            };
            return $.ajax(request);
        }

        self.ajax(self.tasksURI, 'GET').done((data) => {
            console.log(data)

        });

Ответы [ 2 ]

0 голосов
/ 06 марта 2020

Как вы уже упоминали, вы получаете "Несанкционированный", судя по вашей ситуации, это может означать 2 вещи:

  1. Вы не предоставляете Authorization заголовок
  2. Ваш Заголовок Authorization недействителен

Поскольку вы переписываете это, я думаю, что, скорее всего, вы забыли применить заголовок Authorization к вашему httpOptions

Из Angular документы :

httpOptions.headers =
  httpOptions.headers.set('Authorization', 'my-new-auth-token');
0 голосов
/ 06 марта 2020

В angular вы попробуйте это:

В Angular

post(
    this.serverUrl, dataObjToPost,
    {
      headers: new HttpHeaders({
           'Content-Type':  'application/json',
         })
    }
)

Back-end (я использую php)

header("Access-Control-Allow-Origin: http://localhost:4200");
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header("Access-Control-Allow-Headers: Content-Type, Authorization");

$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
print_r($request);

См. Нет заголовка «Access-Control-Allow-Origin» на запрошенном ресурсе - при попытке получить данные из REST API

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...