C# WebRequest.Create 錨點“#”字符問題


背景

在與后台API接口對接時,如將網頁Url作為參數請求數據時,如果是錨點參數,則會丟失。

錨點參數

請求通過WebRequest.Create創建一個WebRequest:

1 var uri = "https://id.test.xxx.com/api/v1/auth/sso/url?redirectUrl=https://test.xxx.com/extend/userhelp#120";
2 var webRequest = WebRequest.Create(uri);

得到的webRequest,發現后面的錨點參數沒有了。如下圖:

獲取的webRequest,Address和RequestUri中的Query參數,不包含錨點參數“#120”

正常的查詢參數

我們換正常的查詢參數,再試驗如上步驟

通過WebRequest.Create創建一個WebRequest:

1 var uri = "https://id.test.xxx.com/api/v1/auth/sso/url?redirectUrl=https://test.xxx.com/extend/userhelp?id=120";
2 var webRequest = WebRequest.Create(uri);

得到的webRequest,查詢Address和RequestUri中的Query參數。如下圖:

后面的查詢參數"?id=120",數據正常。

總結

原因:WebRequest.Create方法中,錨點參數會在另一屬性中出現,

 

如果有錨點參數,並調用WebRequest.Create,臨時解決方案:

  1. 在調用WebRequest.Create時Uri不添加錨點參數,調用完后再自行拼接錨點參數
  2. 從WebRequest.RequestUri.Fragment中獲取錨點參數,重新組合成Uri.

值得注意的是,生成Request后,請求服務器API接口,默認后台是不會處理錨點信息的。所以如果需要支持錨點,需要API接口支持。

 

關鍵字:WebRequest.Create 錨點#參數丟失


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM