【发布时间】:2016-11-04 11:33:58
【问题描述】:
我正在构建一个 React/Express/Node 应用程序并尝试向 Instagram 发出 AJAX 请求。不幸的是,我这样做时总是遇到错误:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
但我已经设置了标题
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With, content-type, accept');
res.setHeader('Access-Control-Allow-Credentials', true);
虽然我尝试在本地发出这些请求,但我也使用 heroku 进行了部署,并且还尝试使用 https(而不是 http)url。然而,我仍然收到同样的错误。
因此,出于某种原因,这是不允许的。我想这是不可能的(如果是,请告诉我)。 Instagram 在您的应用设置中也有此选项:
[ ] 禁用隐式 OAuth
禁用 Web 应用程序的客户端(隐式)OAuth 流。如果您选中此选项,Instagram 将通过仅允许使用服务器端(显式)OAuth 流的授权请求来更好地保护您的应用程序。服务器端流程被认为更安全。有关详细信息,请参阅身份验证文档。
那么,我是否应该让用户单击一个按钮,将请求发送到我的后端,在我的后端发出 ajax 请求,当我收到响应时,然后将其返回给前端?这似乎令人费解,但上面的消息听起来更安全。但它需要更多的网络请求。什么是最好的?
【问题讨论】:
-
最后一段描述了 API 不支持 CORS 或 jsonp 时需要的代理。自己设置标头是没用的……远程服务器需要设置它们
-
最后一段是什么?
-
你问题的最后一段
-
那么也许这不是我应该做的。因为我使用的是 Instagram api,所以我应该能够使用访问令牌发出 AJAX 请求。
标签: ajax node.js api express reactjs