我尝试在JavaScript中设置Cookie。没有跨域请求。 我有一个简单的jQuery AJAX POST代码:
console.log("before cookies:" + document.cookie);
$.ajax({
url: "MYDOMAIN.COM",
type: "POST",
data: data,
success: function (result, status, xhr) {
var cookieSetData = xhr.getResponseHeader('Set-Cookie');
var allHeader = xhr.getAllResponseHeaders();
console.log("after cookies:" + document.cookie);
}
});
记录结果
before cookies:
after cookies:
我从服务器发送的Cookie:
HttpCookie cookie = new HttpCookie("TempData");
cookie.Expires = DateTime.Now.AddMinutes(30);
cookie.Path = "/";
cookie.HttpOnly = false;
cookie.Value = somevalue;
ControllerContext.HttpContext.Response.SetCookie(cookie);
来自FireBag的响应标头:
Set-Cookie: "TempData=AAEAAAD/////A…ul-2017 08:23:13 GMT; path=/"
Cache-Control: "private"
Content-Type: "text/html; charset=utf-8"
Content-Encoding: "gzip"
Vary: "Accept-Encoding"
Server: "Microsoft-IIS/10.0"
X-AspNetMvc-Version: "5.2"
x-aspnet-version: "4.0.30319"
X-SourceFiles: "=?UTF-8?B?RDpc0JDQvdC00YDQtdC…BwaW5nQ2FydFxBZGRUb0NhcnQ=?="
X-Powered-By: "ASP.NET"
Content-Length: "576"
但是xhr.getResponseHeader('Set-Cookie')
返回为空,浏览器不会自动设置cookie(日志窗口中没有cookie)。
xhr.getAllResponseHeaders()
不包含“Set-Cookie”。
为什么呢?
使用jQuery.ajax保存cookie需要做什么?