gpt4 book ai didi

c# - 我应该给这个 cookie 什么域?

转载 作者:行者123 更新时间:2023-11-30 18:07:31 26 4
gpt4 key购买 nike

我正在尝试使用 session ID 从 C# 应用程序调用 Web 服务。
为此,我需要在 cookie 中设置“域” header 。

在 Fiddler 中它看起来像 - “ASP.NET_SessionId=izdtd4tbzczsa3nlt5ujrbf5”(cookie 中没有指定域)。

Web 服务位于 - “http://[此处有一些 ip]:8989/MyAPI.asmx”。

我试过:
http://[ip] ,
http://[ip]:8989 ,
http://[ip]:8989/MyAPI.asmx

所有这些都会导致运行时错误。

我也单独尝试过 ip(即 100.10.10.10),这不会导致运行时错误,并设置了 cookie,但是当我调用 web 时,cookie 永远不会发送方法。

这是我设置域的代码:

if (!string.IsNullOrEmpty(currentSessionID))
{
req.CookieContainer=new CookieContainer();
Cookie cookie = new Cookie("ASP.NET_SessionId", currentSessionID);
cookie.Domain = GetCookieUrl(); //<- What should this be?
req.CookieContainer.Add(cookie);
}

那么域名应该是什么?

谢谢。

最佳答案

我相信它应该只是 [ip]。删除您尝试过的 http://部分。

根据 MSDN 上的 this page,您的代码应该是

cookie.Domain = "100.10.10.10";

接下来,您到底遇到了什么错误?另外,您是否将编译错误与运行时错误混淆了?我很难相信您会遇到编译错误,因为 Domain 是一个字符串属性,这意味着您可以将几乎所有内容放入其中。

最后,为什么要向网络服务发送 cookie?通常的方法是在表单帖子或查询字符串中传递所有内容。


更新

顺便说一句,如果您绝对必须向 header 添加 cookie 以便将其传递给 Web 服务,那么您这样做的方式是(取自 here ):

byte[] buffer = Encoding.ASCII.GetBytes("fareId=123456"); //the data you want to send to the web service
HttpWebRequest WebReq = (HttpWebRequest)WebRequest.Create(url);
WebReq.Method = "POST";
WebReq.ContentType = "application/x-www-form-urlencoded";
WebReq.ContentLength = buffer.Length;
WebReq.Headers["Cookie"] = "ASP.NET_SessionId=izdtd4tbzczsa3nlt5ujrbf5"

Stream PostData = WebReq.GetRequestStream();

请注意,这会在不实例化“cookie”对象的情况下将 header 设置为与请求内联。 cookie 的域属性有助于确保 cookie 仅发送到列出的域。但是,如果您正在发起请求并尝试向其附加 cookie,那么最好的方法是将其作为字符串添加到请求 header 中。

关于c# - 我应该给这个 cookie 什么域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3916554/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com