Aurelia и Discogs API

Я разрабатываю приложение с Aurelia.io, используя Discogs API. Ну, это Javascript, для тех, кто может не знать Аурелию (я не знаю, известна ли она еще).

Я пишу это (конечно, ххх настоящие значения):

import {HttpClient} from 'aurelia-http-client';
let client = new HttpClient()
          .configure(x => {
            x.withHeader('User-Agent', 'myApp/0.1'),
            x.withHeader('Authorization', 'Discogs key=xxxxx, secret=xxxxx'),   
            x.withHeader('Access-Control-Allow-Origin', '*')
          });


        client.get('https://api.discogs.com/releases/'+value.discogsReference)
          .then(data => {
            console.log(data.tracklist[value.releasePosition]);
          });

На самом деле, мой запрос не работает. Вот заголовки, которые отправляет Firefox, тогда как я хочу отправить другие, как вы можете видеть в моем коде:

Host: api.discogs.com
User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:52.0) Gecko/20100101 Firefox/52.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Access-Control-Request-Method: GET
Access-Control-Request-Headers: access-control-allow-origin,authorization,user-agent
Origin: http://localhost:9000
Connection: keep-alive

По-видимому, заголовки, которые я хочу использовать, не принимаются во внимание.

Вот французское сообщение, которое я получаю в консоли (я не нахожу в Интернете перевод):

Blocage d’une requête multiorigines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://api.discogs.com/releases/2275022.  Raison : jeton « access-control-allow-origin » manquant dans l’en-tête CORS « Access-Control-Allow-Headers » du canal de pré-vérification des requêtes CORS.

Что я делаю неправильно? Спасибо

Cesar

2 ответа

Решение

ОК, я решил проблему неправильно. На самом деле невозможно связаться с API Discogs, как я. Вы должны использовать веб-сервис для доступа к API Discogs. Итак, я создал собственный веб-сервис локального узла, используя libcurl ( https://www.npmjs.com/package/node-libcurl). Моя аурелия называет этот веб-сервис libcurl, позволяя мне вызывать Discogs API с правильными заголовками. Фу, я сделал это, но я столкнулся с другими проблемами, о которых я собираюсь опубликовать на stackru...

Попробуй это.

let client = new HttpClient()
      .configure(x => {

        x.withInterceptor({
          request(request) {
             request.headers.append('User-Agent', 'myApp/0.1');
             request.headers.append('Authorization', 'Discogs key=xxxxx, secret=xxxxx');
             request.headers.append('Access-Control-Allow-Origin', '*');
            }
        }
     });
Другие вопросы по тегам