Javascript react中的CORS请求

Javascript react中的CORS请求,javascript,ajax,reactjs,xmlhttprequest,Javascript,Ajax,Reactjs,Xmlhttprequest,尝试使用以下方法从Twitter API获取内容时出现此错误: 我基本上是按照书中所说的做的,但是相关的行被替换了: componentDidMount: function() { twitter.get('statuses/user_timeline', function(error, data) { if(this.isMounted()){ this.setState({tweets: data}) console.dir('call

尝试使用以下方法从Twitter API获取内容时出现此错误:

我基本上是按照书中所说的做的,但是相关的行被替换了:

  componentDidMount: function() {
    twitter.get('statuses/user_timeline', function(error, data) {
      if(this.isMounted()){
        this.setState({tweets: data})
        console.dir('callback')
      }
    }.bind(this));
  }
回调函数似乎永远不会启动,我认为这是由于请求没有完成


我缺少什么?

这里的问题是您使用的模块是为节点编写的,而不是为浏览器编写的

在浏览器中,您不能在源站之外发出请求(在本例中为
localhost:3000
),除非请求的资源具有相应的
Access Control Allow origin

在这种情况下,浏览器向同一资源发出请求,以查看CORS检查是否通过,以及它是否能够安全响应。在这种情况下,它不能,因为Twitter的API不允许您的源代码

如果API支持,您可以避免这些限制,但从Twitter API的V1.1开始

这意味着要从客户端访问twitterapi,您需要在会话中进行身份验证,以便生成可以用于发出请求的OAuth令牌。看看图书馆


或者,您可以从服务器使用简单的twitter模块,并将来自浏览器的请求转发到twitter API。

这里的问题是您使用的模块是为节点编写的,而不是为浏览器编写的

在浏览器中,您不能在源站之外发出请求(在本例中为
localhost:3000
),除非请求的资源具有相应的
Access Control Allow origin

在这种情况下,浏览器向同一资源发出请求,以查看CORS检查是否通过,以及它是否能够安全响应。在这种情况下,它不能,因为Twitter的API不允许您的源代码

如果API支持,您可以避免这些限制,但从Twitter API的V1.1开始

这意味着要从客户端访问twitterapi,您需要在会话中进行身份验证,以便生成可以用于发出请求的OAuth令牌。看看图书馆


或者,您可以从服务器使用简单的twitter模块,并将来自浏览器的请求转发到twitter API。

那么像twitter这样的公共API不允许所有域访问它吗?你真的认为他们必须根据请求一个接一个地将域列入白名单吗?他们可以使用通配符
*
来允许更一般的规则,但是,是的,如果询问者希望能够从其本地开发环境向Twitter的API发出请求,那么他需要在一个域请求的基础上被列入白名单(他们几乎肯定不会这么做)。嗯,我认为他们使用了通配符规则,但我可能错了。这很容易找到。发出请求并查看标题中返回的内容。我从来没有说过这很难;)所以像Twitter这样的公共API不会允许所有域访问它?你真的认为他们必须根据请求一个接一个地将域列入白名单吗?他们可以使用通配符
*
来允许更一般的规则,但是,是的,如果询问者希望能够从其本地开发环境向Twitter的API发出请求,那么他需要在一个域请求的基础上被列入白名单(他们几乎肯定不会这么做)。嗯,我想他们使用了通配符规则,但我可能错了。很容易找到。提出请求,看看标题中会出现什么。我从来没有说过这很难;)
  componentDidMount: function() {
    twitter.get('statuses/user_timeline', function(error, data) {
      if(this.isMounted()){
        this.setState({tweets: data})
        console.dir('callback')
      }
    }.bind(this));
  }