【问题标题】:Aurelia and Discogs APIAurelia 和 Discogs API
【发布时间】:2017-04-09 20:30:17
【问题描述】:

我正在使用 Discogs API 使用 Aurelia.io 开发一个应用程序。嗯,它是 Javascript,对于那些可能不知道 Aurelia 的人(我不知道它是否有名)。

我在写这个(当然 xxx 是真正的值):

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.

我做错了什么? 谢谢

塞萨尔

【问题讨论】:

  • 它与 Aurelia 无关,更多的是您正在访问的 API。如需更多信息,请搜索CORS 以允许您的客户端访问 API。
  • 标头未添加到 API 请求中。

标签: javascript discogs-api aurelia


【解决方案1】:

试试这个。

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', '*');
            }
        }
     });

【讨论】:

  • 感谢您的回答。不幸的是,它也不起作用。我找到了解决方案,我会发布它。
【解决方案2】:

好的,我以错误的方式处理了问题。 实际上,不可能像我一样联系 Discogs API。您必须使用访问 Discogs API 的网络服务。 因此,我使用 libcurl (https://www.npmjs.com/package/node-libcurl) 创建了一个自定义本地节点 web 服务。我的 aurelia 调用这个 web 服务,libcurl 允许我调用带有适当标头的 Discogs API。 呼,我做到了,但我遇到了其他问题,我将在 stackoverflow 上发布...

【讨论】:

    猜你喜欢
    • 2019-01-05
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 2015-03-12
    • 2013-07-01
    • 1970-01-01
    • 2015-05-23
    • 2015-07-11
    相关资源
    最近更新 更多