Веб-приложение Aurelia вызывает конечную точку API мобильных служб Azure

Я создаю веб-проект Aurelia, который будет использовать API. API размещен как мобильная служба Azure. Я знаю, что мне нужно добавить заголовок аутентификации X-ZUMO в запрос. Но когда я создаю экземпляр своего http-клиента, этот заголовок никогда не попадает в заголовки запросов в соответствии с инструментами разработки браузера. присутствует, поэтому у приложения нет разрешений на запуск. Я запускаю это с помощью 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 (если вы делаете запрос на получение) — это единственный способ добавления заголовков.

После этого мне нужно было убедиться, что сервер также может обрабатывать 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