[ASP.net] 解決 URL 中 Hash Fragment 無法傳送到 Server 的問題
最近在寫.Net 8 + ASP.net ,遇到一個關於 hash fragment in url 的問題
我的 Get 網址是 https://localhost:7041/?access_token=token#code=code123
但是發現我在 server 這邊抓不到 #code=code123這一段
我記得之前,我在寫 ASP.net Webform 的時候可以抓到阿,我對整個 HttpContext.Request
搜尋一遍都沒有找到 關於 #code=code123 的資料,後來我按下開發者模式,我發現連傳送都沒有傳出去
那根本不可能抓得到拉,後來查一下相關的設定基本上現在似乎對於 Uri Hash Fragment 似乎不會傳給到 server 端
所以只能透過 javascript 的方法,填入到一個 input 在 post 回 server 抓到該值
javascript code:
<form action="/your-server-endpoint" method="POST"> | |
<input type="hidden" name="fragmentdata"> | |
<button type="submit">Submit</button> | |
</form> | |
<script> | |
document.addEventListener("DOMContentLoaded", () => { | |
var fragment = window.location.hash.substring(1); | |
// 将 fragment 设置到名为 fragmentdata 的 input 中 | |
if (fragment) { | |
document.getElementById("fragmentInput").value = fragment; | |
} | |
}); | |
</script> | |
大概筆記一下,因為有時候在前端處理一些關於 tab 的東西,會用到該操作紀錄一下
https://learn.microsoft.com/zh-tw/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper
https://stackoverflow.com/questions/26117015/how-can-i-get-fragment-value-from-server-side
標籤: .Net , .Net8 , ASP.net , Javascript
--
Yesterday I wrote down the code. I bet I could be your hero. I am a mighty little programmer.
如果這篇文章有幫助到您,簡單留個言,或是幫我按個讚,讓我有寫下去的動力...