我怎样才能从 URL 中捕捉到 ASHX 文件中具有多个值的井号 (#)
How can I catch a pound sign(#) from URL with multiple values in ASHX files
这是我的 ASHX
文件,我在其中使用 httpcontext
从请求 URL 中捕获多个参数,它工作正常,但是当我包含哈希 (#) 值时在 Text 参数中通过 URL。它没有采用另一个参数(文本参数旁边)的 FLOW 值。
所以它适用于:
http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333**&flow=begin&momt=mo
它不适用于:
http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333#**&flow=begin&momt=mo
我的 ASHX 文件:
public void ProcessRequest(HttpContext context)
{
HttpRequest httpRequest = context.Request;
string user = httpRequest.QueryString["user"].ToString();
string pass = httpRequest.QueryString["pass"].ToString();
string tid = httpRequest.QueryString["tid"].ToString();
string msisdn = httpRequest.QueryString["msisdn"].ToString();
string text = httpRequest.QueryString["text"].ToString();
flow = httpRequest.QueryString["flow"].ToString();
HttpContext.Current.Session["user"] = user;
HttpContext.Current.Session["pass"] = pass;
HttpContext.Current.Session["tid"] = tid;
HttpContext.Current.Session["msisdn"] = msisdn;
HttpContext.Current.Session["text"] = text;
HttpContext.Current.Session["flow"] = flow;
在将参数值添加到 URL 之前,您需要对参数值进行 URI 编码。这样服务器就不会被不安全的字符弄糊涂了,例如“#”,当作为 URL 的一部分包含时,它有自己的含义。参见 RFC 3986 Section 2。
请参阅 Encode URL in JavaScript 作为如何使用 JavaScript 对发送的数据进行编码的示例。 URL 中发送数据的任何内容都需要进行编码。请求到达服务器后,您无能为力。在不知道您的 URL 是如何创建的情况下,我无法提供更多。
简而言之:问题出在您的客户端代码上,而不是您的 ASHX 文件。
这是我的 ASHX
文件,我在其中使用 httpcontext
从请求 URL 中捕获多个参数,它工作正常,但是当我包含哈希 (#) 值时在 Text 参数中通过 URL。它没有采用另一个参数(文本参数旁边)的 FLOW 值。
所以它适用于:
http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333**&flow=begin&momt=mo
它不适用于:
http://localhost:10326/ussd.ashx?user=MSL&pass=MSL663055&tid=65506&msisdn=8801520101525&text=***3333#**&flow=begin&momt=mo
我的 ASHX 文件:
public void ProcessRequest(HttpContext context)
{
HttpRequest httpRequest = context.Request;
string user = httpRequest.QueryString["user"].ToString();
string pass = httpRequest.QueryString["pass"].ToString();
string tid = httpRequest.QueryString["tid"].ToString();
string msisdn = httpRequest.QueryString["msisdn"].ToString();
string text = httpRequest.QueryString["text"].ToString();
flow = httpRequest.QueryString["flow"].ToString();
HttpContext.Current.Session["user"] = user;
HttpContext.Current.Session["pass"] = pass;
HttpContext.Current.Session["tid"] = tid;
HttpContext.Current.Session["msisdn"] = msisdn;
HttpContext.Current.Session["text"] = text;
HttpContext.Current.Session["flow"] = flow;
在将参数值添加到 URL 之前,您需要对参数值进行 URI 编码。这样服务器就不会被不安全的字符弄糊涂了,例如“#”,当作为 URL 的一部分包含时,它有自己的含义。参见 RFC 3986 Section 2。
请参阅 Encode URL in JavaScript 作为如何使用 JavaScript 对发送的数据进行编码的示例。 URL 中发送数据的任何内容都需要进行编码。请求到达服务器后,您无能为力。在不知道您的 URL 是如何创建的情况下,我无法提供更多。
简而言之:问题出在您的客户端代码上,而不是您的 ASHX 文件。