webpack-dev-server proxy代理


一個最簡單的代理例子:index.html中有如下代碼

fetch('/api/pub/article/list?pageSize=2').then((data)=>{
    return data.json()
}).then((json)=>{
    console.log(json)
})

里面訪問的是相對地址,但我本地並沒有服務器有提供這些api。把以上的路徑補全為雲服務器上的絕對路徑,但是又報CORS錯誤。

解決辦法是配置一個代理。這里通過webpack-dev-server實現,簡單的配置文件如下:

module.exports = {
  entry: {
      bundle:'./main.js',
  },
  output: {
    filename: '[name].js'
  },
    devServer: {
        port: 8889,
        host: '127.0.0.1',
        proxy: {
            '/api/*': {
                target: 'http://123.207.95.11:9001'
            }
        }
    }
};

接着運行(以當前目錄作為靜態文件的根目錄):

webpack-dev-server --content-base ./

訪問 http://127.0.0.1:8889/index.html ,以上代碼可以正常執行了。

對於以上的配置和運行指令,做了如下事情:

  1. 監聽 127.0.0.1:8889,以當前目錄(content-base參數指令的目錄)作為靜態文件的根目錄
  2. 訪問index.html,里面發出的請求是相對地址,也就是訪問了這個地址 127.0.0.1:8889/pub/..... 
  3. 因為webpack-dev-server讀取以上的配置文件,這個請求匹配了 /api/* ,就把這個請求轉發到了對應的target處,也就是http://123.207.95.11:9001這個地址下了。也就是請求 瀏覽器 -> webpack-dev-server -> 127.207.95.11 。
  4. 最后把響應數據傳遞到瀏覽器。  也就是 127.207.95.11 -> webpack-dev-server -> 瀏覽器

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM