2016-11-14 37 views
1

我有去“/认证/脸谱”

<a href='/auth/facebook'>Log In with Facebook</a> 

能正常工作在我的网页的链接。

我需要在反应组件中在Js中做同样的事情。这是代码

<a className='btn btn-primary btn-outline' 
    role='button' 
    onClick={() => $.get('/auth/facebook')}> 

    Sign up/in to buy 

</a> 

当的onclick触发控制台,如果我试图执行跨站请求输出错误。

的XMLHttpRequest不能加载 https://www.facebook.com/dialog/oauth?response_type=code&redirect_uri=http% ... Fauth%2Ffacebook%2Fcallback &范围= public_profile & CLIENT_ID = XXXX。 请求的 资源上没有“Access-Control-Allow-Origin”标题。因此不允许访问原产地'http://localhost'。

我的理解是,链接和$ .get调用都应该到我的服务器“localhost”并触发相同的路由。 这两个电话有什么区别?

回答

3

$.GET只是要从服务器加载数据(假设它工作,并没有抛出CORS错误)。它不处理重定向。如果由于某种原因,你不能使用href属性,你可以这样做:

onClick={() => window.location.href = '/auth/facebook'}

因为它看起来像你使用的反应,你也可以使用路由器模块像react-受益路由器(https://github.com/ReactTraining/react-router),它公开了一个<Link>组件,以使您的UI与URL保持同步。

+0

这解决了我的问题。尽管如此,我仍然有点困惑。 $ .get发送的头文件是不同的?为什么它不处理重定向? –

+0

'$ .get'对应于一个HTTP GET请求。查看https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Request_methods –