為了避免跨域問題,React的Package.json有個Api代理設置
"proxy": "http://localhost:36000/"
但這個命令只在本地運行npm start時有效,用npm run build打包發布到IIS上就無效,為什么會這樣呢,我們分別看下兩個命令的腳本
在start.js內有這樣一段讀取代理設置
// Load proxy config
const proxySetting = require(paths.appPackageJson).proxy;
const proxyConfig = prepareProxy(proxySetting, paths.appPublic);
但build.js內卻沒有任何地方讀取代理設置
其實Package.json的Proxy只針對npm start使用的node服務器生效,所以發布到IIS需要在IIS上配置URL Rewrite。
IIS配置URL Rewrite步驟(在IIS配置URL Rewrite需要URL重寫工具,若無則需要安裝)
1.點擊需要配置的網站,雙擊URL重寫打開URL重寫功能
2.點擊右側操作欄中“添加規則”,選擇“入站規則”中的“空白規則”並確定
3.設置名稱,匹配Url的規則和模式,以及需要的操作(如重寫)。
4.設置完畢點擊右側操作欄中“應用”即可。