背景 在與後臺API介面對接時,如將網頁Url作為參數請求數據時,如果是錨點參數,則會丟失。 錨點參數 請求通過WebRequest.Create創建一個WebRequest: 得到的webRequest,發現後面的錨點參數沒有了。如下圖: 獲取的webRequest,Address和Request ...
背景
在與後臺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,臨時解決方案:
- 在調用WebRequest.Create時Uri不添加錨點參數,調用完後再自行拼接錨點參數。
- 從WebRequest.RequestUri.Fragment中獲取錨點參數,重新組合成Uri.
值得註意的是,生成Request後,請求伺服器API介面,預設後臺是不會處理錨點信息的。所以如果需要支持錨點,需要API介面支持。
關鍵字:WebRequest.Create 錨點#參數丟失