[研究][ASP.NET]網址傳參數值限制
2021-12-06
Visual Studio 2022 v17.0.2 + C# + ASP.NET + WebForm
最近查某個系統問題,最後發現廠商透過網址傳某參數的參數值,和實際取得的不同,所以寫了下面小程式測試一下。
Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication3.Default" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <title></title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> </div> </form> </body> </html> |
Default.aspx.cs
using System; namespace WebApplication3 { public partial class Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (Request.QueryString["t"] !=null) Label1.Text = Request.QueryString["t"].ToString(); } } } |
https://localhost:44331/Default.aspx?t=1+1
結果網頁上不會顯示加號,HTML Source 看到加號變成空白
********************************************************************************
在 Google Chrome v96 輸入1、5個空白、1
https://localhost:44331/Default.aspx?t=1 1
Google Chrome 會自動把網址轉成
https://localhost:44331/Default.aspx?t=1%20%20%20%20%201
Chrome 網頁上兩個1之間只有顯示1個空白,但 Chrome 看 HTML 原始碼是5個空白。
********************************************************************************
在 Internet Explorer 11 ( IE11) 輸入1、5個空白、1
https://localhost:44331/Default.aspx?t=1 1
網址空白不會編碼,網頁上兩個1之間只有顯示1個空白,但看 HTML 原始碼是5個空白。
********************************************************************************
井號 ( # ) 後面的參數值會全部被濾掉********************************************************************************
& 有特殊用途,後面的值也不見了********************************************************************************
********************************************************************************
結論,要拿參數在網址傳值,最好注意該值不要用到某些會被處理的特殊字元。
(完)
沒有留言:
張貼留言