【发布时间】:2018-07-27 19:28:42
【问题描述】:
我正在尝试通过我的响应将多个 cookie 添加到客户端 Web 浏览器。
首先,我使用 System.Net.HttpListenerResponse.SetCookie 方法将多个 cookie 对象添加到标头,然后发回响应。根据文档,此方法“在随此响应发送的 cookie 集合中添加或更新 Cookie。”
当我查看浏览器开发人员工具中的 cookie 时,我发现只添加了一个 cookie。我的第二个 cookie 名称和值似乎被附加到我的第一个 cookie 的值上。
我编写了一个简单的控制台应用程序来演示该行为,您只需将“127.0.0.1 website.test.com”添加到您的主机文件中,URL 就会解析。
using System.Net;
using System.IO;
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
using (HttpListener listener = new HttpListener())
{
listener.Prefixes.Add(@"http://website.test.com/cookies/");
listener.Start();
HttpListenerContext context = listener.GetContext(); //Waits for an incoming request
HttpListenerRequest request = context.Request;
HttpListenerResponse response = context.Response;
response.SetCookie(new Cookie("name1", "value1"));
response.SetCookie(new Cookie("name2", "value2"));
response.StatusCode = (int)HttpStatusCode.OK;
Stream responseStream = response.OutputStream;
StreamWriter writer = new StreamWriter(responseStream);
writer.Write("");
response.Close();
}
}
}
}
我还尝试在值的末尾添加分号。这纠正了我的第二个 cookie 被附加到我的第一个 cookie 值但客户端中仍然只有一个 cookie 的问题。
【问题讨论】:
标签: c# .net cookies httplistener