天天看點

怎麼解決vue中的跨域問題?

1.什麼是跨域?

發起頁面的請求,與請求的伺服器,協定,端口,域名,其中有一項不相同的,就會産生跨域問題。

怎麼解決vue中的跨域問題?

2.跨域錯誤原因

請求是跨域的,并不一定會報錯。普通的圖檔請求,css檔案請求是不會報錯的

出現跨域的條件:

浏覽器同源政策+請求是ajax請求+請求确實跨域了

跨域錯誤的本質出在浏覽器,是由于同源政策,不是出在伺服器端,伺服器是可以收到請求的

3.解決方案

目前比較流行的解決方案

1.前端用jsonp方式去發請求

2.後端開啟cors  在響應中添加必要的響應頭 ,讓響應回來之後浏覽器不在報錯

3.代理轉發

怎麼解決vue中的跨域問題?

怎麼解決vue項目中的跨域問題

vue.config.js

這個配置檔案中,它有一項是devServer,它就是我們下邊要操作的主角。

module.exports = {

  devServer: {

   // 代理配置

    proxy: {

        // 如果請求位址以/api打頭,就出觸發代理機制

        '/api': {

          target: 'http://localhost:3000', // 我們要代理的真實接口位址

          // http://localhost:9588/api/login -> http://localhost:3000/api/login

            changeOrigin: true, 

          // 如果是false,後端到的請求中的host就是目前浏覽器的host:localhost:9588

          // 如果是true, 後端收到的請求中的host就是target的值

          // 路徑重寫

          // 如果我們不光要使得域名修改,而且還需要改變其它路徑,則需要做路徑重寫

          // 比如 我們想把api去掉  

          // http://localhost:9588/api/login -> http://localhost:3000/login

          pathRewrite: {

            '^/api': ''

          }

      }

    }

  }

}

繼續閱讀