Уеб приложение Aurelia, извикващо крайна точка на API за мобилни услуги на Azure

Създавам уеб проект Aurelia, който ще използва API. API се помещава като мобилна услуга на Azure. Знам, че трябва да добавя заглавката X-ZUMO Auth към заявката. Но когато инстанцирам моя http клиент, тази заглавка никога не стига до заглавките на заявката според инструментите за разработка на браузъра. Когато стартирам това в моето приложение, ми се показва екран за вход, предполагам, защото заглавката на X-ZUMO не е присъства, така че приложението няма разрешения за изпълнение. Изпълнявам това с помощта на gulp, който настройва локален екземпляр на уеб приложението за мен. Пробвах и външния IP адрес.

Ето моят клас:

import {HttpClient} from 'aurelia-http-client';

export class WebApi
{
static inject = [HttpClient];
constructor(http)
{
    this.http = http;
    this.baseUrl = 'https://myProject.azure-mobile.net/';
    this.zumoHeader = 'X-ZUMO-APPLICATION';
    this.zumoKey = 'zumoKey';
    this.client = new HttpClient()
        .configure(x => {
        x.withBaseUrl(this.baseUrl);
        x.withHeader(this.zumoHeader, this.zumoKey);
    });
}

// requests will go here
testGet()
{
    this.client.jsonp('api/logs?application_id=sessionID&__count=20')
    .then(response =>
    {
        alert(response);
    });
}
}

person John Murphy    schedule 24.05.2015    source източник


Отговори (1)


Оказва се, че не можете да използвате метода jsonp в този случай. Методът get (ако правите заявка get) е единственият начин, по който заглавките ще бъдат добавени.

След това трябваше да се уверя, че сървърът може да обработва и CORS.

import {HttpClient} from 'aurelia-http-client';

export class WebApi
{
static inject = [HttpClient];
constructor(http)
{
this.http = http;
this.baseUrl = 'https://myProject.azure-mobile.net/';
this.zumoHeader = 'X-ZUMO-APPLICATION';
this.zumoKey = 'zumoKey';
this.client = new HttpClient()
    .configure(x => {
    x.withBaseUrl(this.baseUrl);
    x.withHeader(this.zumoHeader, this.zumoKey);
});
}

// requests will go here
testGet()
{
this.client.get('api/logs?application_id=sessionID&__count=20')
.then(response =>
{
    alert(response);
});
}
}
person John Murphy    schedule 25.05.2015
comment
Не мисля, че е необходимо да се инжектира HttpClient в класа, ако приемем, че този пример е завършен. - person Chris Mancini; 22.07.2015