首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过AJAX访问Genius API而不在印前检查请求中收到http 403的正确方式是什么?

通过AJAX访问Genius API而不在印前检查请求中收到http 403的正确方式是什么?
EN

Stack Overflow用户
提问于 2018-01-28 02:42:54
回答 1查看 1.8K关注 0票数 2

我正在构建一个非常小的google chrome扩展来打开我在Spotify上听的歌曲的Genius歌词页面。我设法从Spotify获得了正确的歌曲数据,我可以向Genius验证用户,但当我搜索歌曲时,请求在印前检查中失败。

Genius正在用{"meta":{"status":403,"message":"Action forbidden for current scope"}}响应,chrome在控制台上打印了这个:Response for preflight has invalid HTTP status code 403

尽管Genius似乎将问题归咎于令牌的作用域,但我尝试了使用所有作用域(mecreate_annotationmanage_annotationvote)进行身份验证,但问题仍然存在。同样,使用相同令牌的Postman也可以很好地处理相同的请求。

我的代码如下:

代码语言:javascript
运行
复制
let xhttp = new XMLHttpRequest();
xhttp.open("GET", "https://api.genius.com/search?q=Paranoid", true);
xhttp.setRequestHeader("Authorization", "Bearer " + accessToken);
xhttp.send();

完整的请求:

代码语言:javascript
运行
复制
General
Request URL:https://api.genius.com/search?q=Paranoid
Request Method:OPTIONS
Status Code:403 
Remote Address:104.16.213.100:443
Referrer Policy:no-referrer-when-downgrade

Request Headers
:authority:api.genius.com
:method:OPTIONS
:path:/search?q=Paranoid
:scheme:https
accept:*/*
accept-encoding:gzip, deflate, br
accept-language:pt-BR,pt;q=0.9,en-US;q=0.8,en;q=0.7
access-control-request-headers:authorization
access-control-request-method:GET
origin:chrome-extension://ppkhnbipegikhcenmfgpajgphcdkgdej
user-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36

Response Headers
access-control-allow-headers:Origin, Access-Control-Request-Method, Access-Control-Request-Headers, Content-Type, Accept, X-Auth-Token, Authorization
access-control-allow-methods:GET, PUT, POST, OPTIONS, DELETE
access-control-allow-origin:*
cache-control:no-cache
cf-ray:3e3dc4d51f888138-GRU
content-encoding:gzip
content-type:application/json; charset=utf-8
date:Sat, 27 Jan 2018 18:27:56 GMT
expect-ct:max-age=604800, report-uri="https://report-uri.cloudflare.com/cdn-cgi/beacon/expect-ct"
server:cloudflare
set-cookie:__cfduid=db59a3c93b09d3f7b0907ed395ceb1b341517077676; expires=Sun, 27-Jan-19 18:27:56 GMT; path=/; domain=.genius.com; HttpOnly
status:403
status:403 Forbidden
via:1.1 vegur
x-runtime:11

Genius应用编程接口,参考:https://docs.genius.com/

EN

回答 1

Stack Overflow用户

发布于 2018-07-26 21:25:31

我用React做了类似的事情,得到了同样的错误,因为我在网上找不到答案,唯一对我有效的事情是:不是向url发出请求并单独发送报头进行身份验证(正如文档中所建议的那样),而是将access_token作为query_string发送(不发送报头),比如:https://api.genius.com/search?q=Paranoid&access_token=YOUR_ACCESS_TOKEN

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48479256

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档