Aurelia 和 Discogs API
Aurelia and Discogs API
我正在使用 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]);
});
实际上,我的请求不起作用。
这是 headers 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
看来我要强制的headers没有考虑进去
这是我在控制台中收到的法语消息(我在网上找不到翻译):
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.
我做错了什么?
谢谢
塞萨尔
试试这个。
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', '*');
}
}
});
好的,我处理问题的方式不对。
实际上不可能像我一样联系 Discogs API。您必须使用 Web 服务访问 Discogs API。
因此,我使用 libcurl (https://www.npmjs.com/package/node-libcurl) 创建了一个自定义本地节点 Web 服务。我的 aurelia 将此网络服务称为 libcurl,允许我使用适当的 headers 调用 Discogs API。
ew,我做到了,但是我遇到了其他问题,我将 post 关于 Whosebug 的...
我正在使用 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]);
});
实际上,我的请求不起作用。 这是 headers 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
看来我要强制的headers没有考虑进去
这是我在控制台中收到的法语消息(我在网上找不到翻译):
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.
我做错了什么? 谢谢
塞萨尔
试试这个。
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', '*');
}
}
});
好的,我处理问题的方式不对。 实际上不可能像我一样联系 Discogs API。您必须使用 Web 服务访问 Discogs API。 因此,我使用 libcurl (https://www.npmjs.com/package/node-libcurl) 创建了一个自定义本地节点 Web 服务。我的 aurelia 将此网络服务称为 libcurl,允许我使用适当的 headers 调用 Discogs API。 ew,我做到了,但是我遇到了其他问题,我将 post 关于 Whosebug 的...