Я создал две страницы aspx для демонстрации,
page1 - WebForm1.aspx
<asp:TextBox ID="txtTest" runat="server" Width="100px"></asp:TextBox>
<asp:Button ID="btnClick" runat="server" Text="test" Width="100px" OnClick="btnClick_Click"/>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["text"] == null || string.IsNullOrEmpty(Request.QueryString["text"].ToString()))
txtTest.Text = "ö";
else
txtTest.Text = Request.QueryString["text"].ToString();
}
}
public void btnClick_Click(object sender, EventArgs e)
{
HttpResponse response = HttpContext.Current.Response;
response.Write(string.Format("<script>window.location = '{0}';</script>", HttpUtility.JavaScriptStringEncode("WebForm2.aspx?text=" + HttpUtility.UrlEncode(txtTest.Text))));
response.End();
}
page2 - WebForm2.aspx
<asp:TextBox ID="txtResult" runat="server" Width="200px"></asp:TextBox>
<asp:Button ID="btnBack" runat="server" Text="back" Width="50px" OnClick="btnBack_Click"/>
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["text"] == null || string.IsNullOrEmpty(Request.QueryString["text"].ToString()))
txtResult.Text = "empty";
else
txtResult.Text = Request.QueryString["text"].ToString();
}
}
public void btnBack_Click(object sender, EventArgs e)
{
HttpResponse response = HttpContext.Current.Response;
response.Write(string.Format("<script>window.location = '{0}';</script>", HttpUtility.JavaScriptStringEncode("WebForm1.aspx?text=" + HttpUtility.UrlEncode(txtResult.Text))));
response.End();
}
и затем я использовал Fiddler для отслеживания Интернета, нажал кнопку тестирования и затем нажал кнопку назад.
# Result Protocol Host URL Body Caching Content-Type Process Comments Custom
6 200 HTTP localhost:56484 /WebForm2.aspx?text=%c3%b6 835 private text/html; charset=utf-8 iexplore:12316
8 200 HTTP localhost:56484 /WebForm2.aspx?text=%u00f6 175 private text/html; charset=utf-8 iexplore:12316
9 200 HTTP localhost:56484 /WebForm1.aspx?text=%c3%b6 830 private text/html; charset=utf-8 iexplore:12316
10 200 HTTP localhost:56484 /WebForm1.aspx?text=%u00f6 175 private text/html; charset=utf-8 iexplore:12316
11 200 HTTP localhost:56484 /WebForm2.aspx?text=%c3%b6 834 private text/html; charset=utf-8 iexplore:12316
мы могли видеть, что тела URL имеют странную кодировку, почему сгенерировал% u00f6? это может быть обратно к% c3% b6?
и когда мы нажимали кнопку «Назад», чтобы вернуться на страницу 1, его реферер пропал На самом деле я думаю, что странная кодировка вызвала проблему, потому что, когда я использовал инструменты разработчика F12, чтобы изменить действие (с «% u00f6» на «% c3% b6»), а затем нажал кнопку «Назад», был создан реферер.
нажмите здесь, чтобы увидеть скриншот
очень признателен вам, если вы можете дать ответ.