我有一些 jQuery JavaScript 调用一个简单的 WCF Web 服务。对我来说,在 JavaScript 中设置一个 cookie 并在服务器端读取它是相当容易的。
这是那个代码。
客户端(JavaScript):
document.cookie = "father=christmas";
服务器端(WCF 中的 C#):
var cookieHeader = WebOperationContext.Current.IncomingRequest.Headers[System.Net.HttpRequestHeader.Cookie];
if (!String.IsNullOrEmpty(cookieHeader))
{
var match = cookieHeader.Split(';').Select(cookie => cookie.Split('=')).FirstOrDefault(kvp => kvp[0] == "father");
if (match != null)
{
result = match[1]; // result now equals "christmas"
}
}
但我也想在服务器上的 WCF 中设置一个 cookie 并在客户端读取它。这是我的代码未能做到这一点。
服务器端(WCF 中的 C#):
WebOperationContext.Current.OutgoingResponse.Headers[System.Net.HttpResponseHeader.SetCookie] = "cloud=lonely";
客户端(jQuery JavaScript):
$(document).ready(function () {
$.ajax({
url: "/ScratchpadSite/Service.svc/Hallo",
type: "POST",
success: function (data, textStatus, jqXHR) {
var xrh = jqXHR.getAllResponseHeaders();
$('body').html('<p>Father ' + data.d + '<\/p>');
},
error: function (jqXHR, textStatus, errorThrown) {
$('body').html('<p>' + textStatus + ': ' + errorThrown + '<\/p>');
}
});
});
但是 xhr 的值(我希望包含我的 'cloud=lonely' cookie 的变量)是
服务器:ASP.NET 开发服务器/10.0.0.0 日期:格林威治标准时间 2012 年 4 月 4 日星期三 15:29:27 X-AspNet-版本:4.0.30319 内容长度:17 缓存控制:私有 内容类型:应用程序/json;字符集=utf-8 连接:关闭
(注意我的网页(包括 JavaScript)和 WCF 服务驻留在同一台服务器上,因此应该没有跨域问题。)
我是否正确设置了响应标头 cookie?如果是这样,我应该在哪里寻找返回给客户的价值?如果不是,我应该怎么做?