鍍金池/ 問(wèn)答/HTML/ 請(qǐng)問(wèn)如何解決webpack打包Reactjs后發(fā)送http請(qǐng)求出現(xiàn)的跨域問(wèn)題

請(qǐng)問(wèn)如何解決webpack打包Reactjs后發(fā)送http請(qǐng)求出現(xiàn)的跨域問(wèn)題

使用ReactJs寫(xiě)前端十分的方便,但是使用webpack打包以后想要進(jìn)行http請(qǐng)求,就會(huì)出現(xiàn)跨域的問(wèn)題。所以,我想請(qǐng)問(wèn)一下,當(dāng)我想要訪問(wèn)一些api的信息,并將信息通過(guò)Reactjs展現(xiàn)在前端的時(shí)候(這些api不在我的服務(wù)器上),要如何解決呢。

回答
編輯回答
舊酒館

先猜測(cè)下你的問(wèn)提,你的問(wèn)題場(chǎng)景可能如下:

  1. 你通過(guò)webpack構(gòu)建react項(xiàng)目,同時(shí)利用webpack提供的工具啟動(dòng)了一個(gè)本地的server,這樣你就可以通過(guò)類(lèi)似下面的鏈接訪問(wèn)你的頁(yè)面了 http://localhost:3000/index.html
  2. 現(xiàn)在你想在你用react構(gòu)建的頁(yè)面中,使用ajax去請(qǐng)求一個(gè)別的服務(wù)上的api,例如 https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy

如果我沒(méi)猜錯(cuò)的話,你需要完成下面2件事情

  1. 在自己的代碼中編寫(xiě)ajax請(qǐng)求,這里以 isomorphic-fetch進(jìn)行代碼示例

    import Fetch from 'isomorphic-fetch';
    
    Fetch('https://api.github.com/users/whatever?client_id=xxxx&client_secret=yyyy')
    .then(data=>{
      // 業(yè)務(wù)代碼
    })
    .catch(err=>{
      // 異常處理
    })
  2. 如果對(duì)應(yīng)的api做了跨域的處理,那么就不需要而外設(shè)置,如果沒(méi)有需要使用webpack提供的webpack-dev-server中的代理設(shè)置,示例代碼如下

    // webpack.config.js
    
    devServer:{
       proxy:{
         '/xx':{
           target:"",
           changeOrigin: true,
           pathRewrite: {
              '^/xx': ''
            }
         }
       }
    }

希望上面的偽代碼能幫到你,另外相關(guān)的資源如下:

  1. isomorphic-fetch
  2. webpack-dev-server
2017年9月14日 03:24
編輯回答
悶騷型

用你的服務(wù)器去請(qǐng)求數(shù)據(jù) 然后再轉(zhuǎn)發(fā)給你前端的js

2018年1月2日 04:43