鍍金池/ 問答/Linux  網(wǎng)絡(luò)安全  HTML/ 經(jīng)過公司網(wǎng)關(guān)訪問一個外部接口, 直接通過web打開 或者通過ip在代碼中可以訪問

經(jīng)過公司網(wǎng)關(guān)訪問一個外部接口, 直接通過web打開 或者通過ip在代碼中可以訪問 由node做一層路由之后 就會被網(wǎng)關(guān)攔截?

方式一:直接在代碼中使用完整url進行訪問:

 @action getData = (page: number) => {
    axios.get(`http://111.231.0.208/api/course?limit=20&offset=${(page - 1) * 20}`).then(res => {
      this.data.page = page
      this.data.list = res as any
    })
  }

這樣是完全跑通的,但是這是個前端項目會涉及到跨域問題。
而一般的在前端項目中的做法,都是在webpack中做一層轉(zhuǎn)發(fā),把本地url映射到服務器上,代碼如下:

devServer: {
        hot: true,
        port: localPort,
        host:'0.0.0.0',
        // enable HMR on the server
        noInfo: true,
        quiet: false,
        historyApiFallback: true,
        // minimize the output to terminal.
        contentBase: resolve(rootPath, 'src'),
        // match the output path
        publicPath: '/',
        // match the output `publicPath`
        proxy: {
            "/api/**": "http://111.231.0.208/"
        }
    },

而一旦通過這種方式去請求/api/course接口,這個請求就會被網(wǎng)關(guān)攔截,而且通過fiddler可以看到被攔截的地址是localhost:3000/api/course,并且沒有發(fā)出http://111.231.0.208/api/cour...,是不是可以理解為在請求這個本地路徑時,請求就被攔截了。那他是如何做到的?

clipboard.png

回答
編輯回答
解夏

fiddler是攔截不到代理服務器發(fā)出的請求的,

所以你得弄清這個錯誤是代理服務器響應的,還是111.231.0.208 通過代理服務器響應給你的。

2017年1月18日 01:44