【问题标题】:FourSquare API doesn't support CORSFourSquare API 不支持 CORS
【发布时间】:2013-01-28 13:53:41
【问题描述】:

FourSquare API 文档声明它支持 CORS。但是调用 /users/ 端点清楚地表明只支持 GET 请求:

curl -X OPTIONS -i "https://api.foursquare.com/v2/users/self/checkins?oauth_token=CLIENT_OAUTH_TOKEN"

HTTP/1.1 405 Method Not Allowed
Access-Control-Allow-Origin: *
Cache-Control: no-cache, private, no-store
Content-Type: application/json; charset=utf-8
Date: Wed, 13 Feb 2013 04:31:54 GMT
Expires: Wed, 13 Feb 2013 04:31:54 GMT
Pragma: no-cache
Server: nginx/1.2.1
Tracer-Time: 17
Content-Length: 104
Connection: keep-alive

{"meta":{"code":405,"errorType":"other","errorDetail":"This endpoint only supports GET."},"response":{}}

这只是这些 API 端点所特有的还是发生了一些变化?

【问题讨论】:

    标签: javascript rest foursquare cors


    【解决方案1】:

    我没有研究 FourSquare API 中的所有方法,但我猜 FourSquare 不需要支持预检请求,因为它们的所有 API 请求都很简单。 docs here 建议 API 仅支持 GET 和 POST。如果这些请求没有任何自定义标头,则它们永远不需要预检请求。

    【讨论】:

    • 感谢 Monsur - 但是如果执行 XHR GET 则浏览器执行此预检 OPTIONS 请求并失败。
    • 您能分享您的预检请求标头吗?请求中可能有一些额外的标头(可能会也可能不会)。
    • 这是一个应该可以工作的客户端应用程序示例:bl.ocks.org/ajturner/a66ae1a71c43fa7b8a33
    • 该样本似乎因非 CORS 原因而失败。看起来 FourSquare 通过将 X-Frame-Options 标头设置为 DENY 来防止其身份验证框架嵌入到 iframe 中。您可以通过查看 console.log 来查看错误。
    • 这 - “如果这些请求没有任何自定义标头,它们将永远不需要预检请求。” - 帮了我很多,因为我有一个无缓存标头和一个邮递员生成的标头,它启用了预检请求。谢谢!
    猜你喜欢
    • 2019-12-20
    • 2016-09-03
    • 1970-01-01
    • 2015-07-16
    • 2012-12-26
    • 2017-01-09
    • 1970-01-01
    • 2015-12-29
    • 2014-11-04
    相关资源
    最近更新 更多