解決報錯HTTP Error 400. The request hostname is invalid.

描述

博主在本地運行了自己的項目,然後在另一臺服務器上用node.js寫了一個獨立程序,該程序內會調用本地項目的接口,發現在配置完http請求的options–》hostname爲本地的ip後,運行這個獨立程序報錯:HTTP Error 400. The request hostname is invalid.
這裏寫圖片描述

開始以爲我的本地ip設置錯誤或者防火牆阻擋或者網絡通信有問題,後面經過分析:windows系統防火牆開啓了web服務沒有阻擋;本地與那臺服務器屬於同一個網段(連接同一VPN),不需要經過什麼端口映射;百度了一下這個錯誤,發現是與IIS Express–web服務器有關。核心是要使本地項目支持以IP的形式作爲Hostname來訪問。當前只支持localhost作爲hostname訪問。

操作步驟

本地項目是用IIS Express運行的.NET項目。現在就要讓VS2017 使用IIS Express 支持非localhost訪問。
步驟如下:
1. 在當前項目的工程路徑下,找到.vs\config 文件夾下面的applicationhost.config 這個文件。.vs文件夾一般會被隱藏,找到該文件夾的辦法有:
- 第一種辦法:在文件管理器的搜索框中直接搜索.vs,就能出來;
- 第二種辦法:在當前項目的根目錄下,點擊”查看”按鈕,勾選下圖紅線框內的”隱藏的項目”選項,就能出現.vs文件夾。

這裏寫圖片描述
2. 在找到applicationhost.config 文件後,打開,在文件中找到site 那個節點,修改bindings 屬性,如下圖所示;這其實給在iis中編輯綁定是一樣的意思。

<img src="b11.png"/>

3. 具體修改的內容有幾點注意的:

a. 如果用實際公網域名
<binding protocol="http" bindingInformation="*:9999:localhost" />, localhost 直接換成公網域名即可,vs不需要使用管理員權限打開

b. 如果用自定義域名
localhost 替換爲自定義域名,如果是管理員權限打開不需要編輯系統的hosts文件,如果是普通權限打開,需要編輯hosts文件;
我是win7系統,hosts文件在 C:\Windows\System32\drivers\etc 下面,是隱藏的,所以要從系統菜單-工具-文件夾選項-的顯示中選擇顯示隱藏的文件夾。
我在修改的時候,安裝的殺毒軟件小紅傘阻止修改host,選擇允許就可以保存了,不然會提示有其他文件正在打開,不讓保存。

c. 如果使用局域網ip
將localhost 換成具體的ip即可,注意一定要用管理員權限打開vs。不然還是不能的。我是需要使用局域網ip,在此處新增了一條binding屬性,如下圖所示:
<img src="b2.png"/>

結果

修改完畢config後,重啓下VS,重啓的時候選擇是否以管理員的身份運行,打開VS後,運行項目,可以看到右下角的IIS express 托盤中-查看全部運行程序,會有剛纔設置的ip。
<img src="b3.png"/>

這時再重新運行服務器的node程序就可以訪問到本地的接口了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章