c# - HttpListener 不获取带有# 符号的参数
问题描述
我以这种方式启动服务器:
HttpListener httpListener = new HttpListener();
httpListener.Prefixes.Add("http://localhost:11000/");
httpListener.Start();
while (true)
{
HttpListenerContext context = httpListener.GetContext();
HttpListenerRequest request = context.Request;
}
然后发送两个请求:
- http://localhost:11000/?abc=123
- http://localhost:11000/?#abc=123
HttpListener 捕获第一个带有参数的请求,但第二个没有任何参数。我需要它,因为我正在尝试实现 Facebook Outh 并将 Facebook 答案移动到侦听特殊端口的 WPF 应用程序,但 Facebook 响应包含此符号“#”。如果获取请求包含 # 符号,我如何接收所有参数?
解决方案
浏览器从不发送 # 之后的 uri 部分。这是设计使然,因为 # url 片段用于客户端导航。
参见 RFC https://www.rfc-editor.org/rfc/rfc2396#section-4
如果您可以更改客户端上运行的代码,您可以将 URI 的一部分存储在 http 标头或请求的其他一些正文部分中。
推荐阅读
- html - 如果地址栏中的路径片段没有尾部斜杠,浏览器会发送意外(不正确?)请求以加载资源
- shopify - 在 shopify 液体中使用“字符串”作为“数组”
- json - 获取 ARM 模板中的对象属性名称数组
- c++ - 如何默认初始化 std::vector
- angular - SystemJS 6.x set/register modules or provide mapping when dynamically loading module
- python - How to see all fields exposed by SOAP api?
- angular - How to Configure angular application to connect to remote server in production mode
- mongodb - mongodb 聚合 $in 和 $type
- javascript - 如何将JS中的数组转换成这种格式
- javascript - Unable to enter text in ReactNative textbox