技術工具用VsCode擴展外掛Live Server設定伺服端代理不用Nginx做伺服端代理也能解決跨域問題

跨域問題

也就是俗稱的前端與後端互動需要同源策略,即如下:

域:伺服器網域名稱,唯一標識(協定,網域名稱,連接埠)必須保證一致,說明域相同

跨域:在一個伺服器上,去訪問另一個伺服器上,並且得到另一個伺服器回傳回來的值,這就是javascript跨域,其實簡單點,之前我們做的ajax,都是在同域中訪問,現在只是訪問的伺服器變成了另外的,不是同一台了。僅此而已。但是這樣一變,之前的程式碼就不能用了。

解決跨域有幾種方式,其中之一就是建置代理伺服器(nginx),讓所訪問網域名稱、連接埠、路徑相同。但我這裡不想用nginx,則可以用VScode 的擴展外掛Live Server簡單實現。

VSCode 外掛Live Server代理設定

Live Server擴展的設定,可以進入設定介面設定,也可以手動設定settings.json,內容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    "liveServer.settings.host": "localhost", //網域名稱或IP

    "liveServer.settings.port": 5500,       //預設連接埠

    "liveServer.settings.wait": 1000,       //重新整理頻率

    "liveServer.settings.CustomBrowser": "chrome",  //開啟到目標瀏覽器

    "liveServer.settings.ChromeDebuggingAttachment": false, //是否開啟ChromeDebug

    "liveServer.settings.proxy": {  //代理設定

        "enable": true, //是否開啟代理設定

        "baseUri": "/api", //代理的訪問根路徑,如http://localhost:5500/api

        "proxyUri": "http://www.xxxx.com:8080/api" //遠端伺服端介面

    }

}

設定完後,重啟 LiveServer 後,在瀏覽器輸入 http://localhost:5500/api 會被代理到http://www.xxxx.com:8080/api 介面上,如果程式碼伺服器不可訪問,LiveServer 就會忽略proxy屬性,以預設的方式開啟。透過這個方式,你可直接掛載工程目錄到對應的tomcat、jetty、iis、php-fpm等後端目錄進行處理。