如何在REST服务的请求标头中设置cookie

时间:2014-03-21 22:08:39

标签: c# asp.net web-services rest cookies

我正在开发调用REST服务的webservice,并且根据要求我需要在请求标头中设置cookie。如果我设置好所有内容,它会给我" 401未经授权的消息"作为回应。

 var request = (HttpWebRequest)HttpWebRequest.Create("https://TESTRestAPI/service/1/sub");
 request.Headers.Add("Authorization", "Basic" + Encoded);
 request.Method = "GET";
 request.ContentType = "application/json";
 var response = (WebResponse)request.GetResponse();

So far I tried this :-
1. request.Headers["Cookie"] = "BasicAuth=fromTest";
2. request.CookieContainer = new CookieContainer();
   Uri target = new Uri("https://TESTRestAPI/service/1/sub"););
   Cookie ck = new Cookie("BasicAuth","fromTest") { Domain = target.Host };

这是我第一次调用REST服务,感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

此代码用于通过使用基本身份验证来验证http请求,其中包含一些用户名和密码

 byte[] credentialBuffer = new UTF8Encoding().GetBytes(username + ":" + password);
 string authToken = Convert.ToBase64String(credentialBuffer);
 string authHeaderValue = string.Format(System.Globalization.CultureInfo.InvariantCulture, "Basic {0}", authToken);
 HttpWebRequest request = (HttpWebRequest)System.Net.WebRequest.Create("https://TESTRestAPI/service/1/sub");
 request.Headers.Add(HttpRequestHeader.Authorization, authHeaderValue);

另外,如果要求请求包含一些具有某些名称和某些值的cookie,则Id'使用您的代码2。

 CookieContainer requestCookieContainer = new CookieContainer();
 Cookie requiredCookie = new Cookie("BasicAuth", "fromTest");
 requiredCookie.Domain = "https://TESTRestAPI/service/1/sub";
 requiredCookieContainer.Add(requiredCookie);
 request.CookieContainer = requestCookieContainer;

如果您的应用程序在IIS上运行,则配置文件可能需要一些行。我认为默认情况下禁用基本身份验证,因为它不太安全。

 <system.webServer>
    <security>
       <authentication>
          <basicAuthentication enabled="true"/>
       </authentication>
    </security>
  </system.webServer>