Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer HTTP基本身份验证中使用cookie的正确方法_Internet Explorer_Http_Asp.net Web Api - Fatal编程技术网

Internet explorer HTTP基本身份验证中使用cookie的正确方法

Internet explorer HTTP基本身份验证中使用cookie的正确方法,internet-explorer,http,asp.net-web-api,Internet Explorer,Http,Asp.net Web Api,我正在尝试对IIS托管的WebAPI服务实施基本HTTP身份验证。我正在尝试使用cookies在服务器和客户端之间发送与用户相关的数据。当客户端是Firefox时,这段代码似乎可以工作,但如果我使用IE或Chrome,cookie永远不会发送回服务器 我有以下几点 我正在向响应消息添加cookie,如下所示。。。在HttpModule.AuthenticateRequest-event处理程序中 HttpApplication app = sender as HttpApplication;

我正在尝试对IIS托管的WebAPI服务实施基本HTTP身份验证。我正在尝试使用cookies在服务器和客户端之间发送与用户相关的数据。当客户端是Firefox时,这段代码似乎可以工作,但如果我使用IE或Chrome,cookie永远不会发送回服务器

我有以下几点

我正在向响应消息添加cookie,如下所示。。。在HttpModule.AuthenticateRequest-event处理程序中

HttpApplication app = sender as HttpApplication;

HttpResponse response = app.Context.Response;
HttpRequest request = app.Context.Request;

HttpCookie c = new HttpCookie("MyCookie", "Hellou!");
c.Expires = DateTime.Now.AddDays(1);
c.Domain = request.Url.Host;
c.Path = "/";

response.Cookies.Add(c);
…或在控制器后操作中:

CookieHeaderValue chv = new CookieHeaderValue("MyCookie", "Hellou");
chv.Expires = DateTime.Now.AddDays(1);
chv.Domain = Request.RequestUri.Host;
chv.Path = "/";

rmsg.Headers.AddCookies(new CookieHeaderValue[] { chv });
我在HttpModule.AuthenticateRequest-event处理程序中像这样读取cookie

HttpApplication app = sender as HttpApplication;
HttpRequest request = app.Context.Request;

if (request.Cookies.Count > 0)
{
    HttpCookie c = request.Cookies.Get("MyCookie");
    if (c != null)
    {
        // ...
    }
}

cookie代码正确吗?有没有办法确保cookie在所有客户端中都能正常工作?

基本身份验证的全部思想是,客户端在授权标头中的每个请求上发送用户的用户名和密码。设计API时不需要任何cookie

如果不想使用基本身份验证(因为每次请求都需要发送用户名和密码),可以使用令牌保护API。请看一个例子