2016-11-14 36 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 –