Windows 10 MessageWebsocket adding cookie

本文关键字:cookie adding MessageWebsocket Windows | 更新日期: 2023-09-27 18:34:49

我正在编写一个Windows 10应用程序,我正在尝试将websocket连接到IRCCloud api。

IRCCloud API 需要以下请求标头:

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 非常具体,因为会话 cookie 应该是请求标头中唯一的 cookie。会话密钥使用 Windows.Web.Http.HttpClient 检索。

我向

IRCCloud开发人员验证了所有其他参数,他们说它们是正确的,他们还向我指出了cookie。所以我的问题是,如何删除饼干?在 MessageWebSocket 类中,似乎没有适用于它的公共方法。

Windows 10 MessageWebsocket adding cookie

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);
}