2021年12月6日 星期一

[研究][ASP.NET]網址傳參數值限制

[研究][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個空白。

********************************************************************************

井號 ( # ) 後面的參數值會全部被濾掉

********************************************************************************

& 有特殊用途,後面的值也不見了

********************************************************************************

********************************************************************************

結論,要拿參數在網址傳值,最好注意該值不要用到某些會被處理的特殊字元。

(完)

沒有留言:

張貼留言