URL路徑中包含特殊字元%的處理

SieSteven發表於2015-11-23

URL路徑中,檔名含“%、&”等特殊字元,怎麼才能正常訪問這個圖片

首先:我考慮的是轉義字元,把特殊字元轉義一下。換成非特殊字元。後查證不行。 百度的官方解釋如下 https://support.microsoft.com/zh-cn/kb/942076 若要解決此問題,請執行以下步驟:

注意:完成以上步驟後,可能會降低執行 IIS 的伺服器的安全級別。因此,將allowDoubleEscaping屬性設定為True之前,應考慮所涉及的風險。
  1. 單擊開始,在開始搜尋框中,鍵入記事本,在程式列表中,右鍵單擊記事本,然後單擊以管理員身份執行如果提示您輸入管理員密碼或進行確認,請鍵入您的密碼,或單擊繼續
  2. 檔案選單上,單擊開啟,在檔名框中,鍵入%windir%\System32\inetsrv\config\applicationHost.config ,然後單擊開啟
  3. 在 ApplicationHost.config 檔案中,找到requestFiltering XML 元素。
  4. allowDoubleEscaping屬性的值更改為True若要執行此操作,請使用類似於下面的程式碼示例的程式碼。
    <requestFiltering allowDoubleEscaping="true">
    
  5. 檔案選單上,單擊儲存
  6. 退出記事本。
重要:當您啟用雙引號轉義的序列時,則可能會降低執行 IIS 的伺服器的安全級別。

前面的步驟將直接編輯 applicationHost.config 檔案,並在伺服器級別上配置此設定。您可以使用Appcmd命令來配置該設定。若要執行此操作,請按照下列步驟操作:
  1. 單擊開始,單擊執行,然後在開啟框中鍵入cmd 
  2. 鍵入以下命令,並按 enter 鍵:
    C: CD %windir%\system32\inetsrv
  3. 執行下列命令之一:
    • Appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True
      注意:這將通過建立或編輯 Web.config 檔案中的根資料夾中的"預設 Web 站點"配置該設定只為"預設網站"。
    • appcmd set config "Default Web Site" /section:system.webServer/Security/requestFiltering -allowDoubleEscaping:True /commit:appHost
      注意:這將通過使用位置標記,在 applicationHost.config 檔案中配置該設定只為"預設網站"。
網友的翻譯版本:
1、在位址列輸入: %windir%\system32\inetsrv\config\applicationhost.config然後單擊 開啟。2、在 ApplicationHost.config 檔案, 定位到檔案中的 configuration/system.webServer/security/requestFiltering/下 <requestFiltering> 節點。將<requestFiltering> 改為 <requestFiltering allowDoubleEscaping="true"> 即可。3、或在網站的web.config裡修改或新增該節點,也是可以的。例如程式碼示例:<configuration><system.webServer><security><requestFiltering allowDoubleEscaping="true"></requestFiltering></security></system.webServer></configuration>如此,iis7配置偽靜態時,url中特殊符號包含空格無法訪問的問題就解決了。

相關文章