Windows 10 MessageWebsocket 添加cookie
Windows 10 MessageWebsocket adding cookie
我正在编写一个 Windows 10 应用程序,我在其中尝试将 websocket 连接到 IRCCloud api。
IRCCloud api 需要以下请求 headers:
GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
User-Agent: [REDACTED]
Cookie: session=[REDACTED]
Sec-WebSocket-Key: [REDACTED]==
Host: api.irccloud.com
Origin: https://api.irccloud.com
Sec-WebSocket-Version: 13
我正在使用以下代码将 websocket 连接到 api:
MessageWebSocket Socket = new MessageWebSocket();
Socket.SetRequestHeader("Origin", "https://api.irccloud.com");
Socket.SetRequestHeader("Cookie", "session=" + info.Session);
Socket.MessageReceived += Socket_MessageReceived;
await Socket.ConnectAsync(new Uri("wss://" + Host + Path));
但是,当我连接时,由于 Websocket 自行添加了一个名称为 __cfduid 的 cookie,我收到了身份验证错误。 IRCClouds API 非常具体,因为 session cookie 应该是请求 header 中唯一的 cookie。使用 Windows.Web.Http.HttpClient.
检索 session 密钥
我用 IRCCloud 开发人员验证了所有其他参数,他们说它们是正确的,他们还向我指出了 cookie。所以我的问题是,如何删除 cookie?在 MessageWebSocket class 中没有 public 方法似乎适用于它。
WebSockets API 使用与 Windows.Web.Http
命名空间相同的底层堆栈,因此,您需要使用如下方式手动删除 cookie:
var filter = new HttpBaseProtocolFilter();
var cookieManager = filter.CookieManager;
var uri = new Uri("http://example.com/foo/bar");
foreach (var cookie in cookieManager.GetCookies(uri))
{
cookieManager.DeleteCookie(cookie);
}
我正在编写一个 Windows 10 应用程序,我在其中尝试将 websocket 连接到 IRCCloud api。
IRCCloud api 需要以下请求 headers:
GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
User-Agent: [REDACTED]
Cookie: session=[REDACTED]
Sec-WebSocket-Key: [REDACTED]==
Host: api.irccloud.com
Origin: https://api.irccloud.com
Sec-WebSocket-Version: 13
我正在使用以下代码将 websocket 连接到 api:
MessageWebSocket Socket = new MessageWebSocket();
Socket.SetRequestHeader("Origin", "https://api.irccloud.com");
Socket.SetRequestHeader("Cookie", "session=" + info.Session);
Socket.MessageReceived += Socket_MessageReceived;
await Socket.ConnectAsync(new Uri("wss://" + Host + Path));
但是,当我连接时,由于 Websocket 自行添加了一个名称为 __cfduid 的 cookie,我收到了身份验证错误。 IRCClouds API 非常具体,因为 session cookie 应该是请求 header 中唯一的 cookie。使用 Windows.Web.Http.HttpClient.
检索 session 密钥我用 IRCCloud 开发人员验证了所有其他参数,他们说它们是正确的,他们还向我指出了 cookie。所以我的问题是,如何删除 cookie?在 MessageWebSocket class 中没有 public 方法似乎适用于它。
WebSockets API 使用与 Windows.Web.Http
命名空间相同的底层堆栈,因此,您需要使用如下方式手动删除 cookie:
var filter = new HttpBaseProtocolFilter();
var cookieManager = filter.CookieManager;
var uri = new Uri("http://example.com/foo/bar");
foreach (var cookie in cookieManager.GetCookies(uri))
{
cookieManager.DeleteCookie(cookie);
}