我有一些jQuery JavaScript调用一个简单的WCF Web服务。我很容易在JavaScript中设置cookie并将其读取到服务器端。如何在WCF中设置cookie并在调用Ajax的成功函数(或其他地方)中读取它。
这是代码。
客户端(JavaScript):
document.cookie = "father=christmas";
服务器端(C#在WCF):
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"
}
}
但我也想在服务器上设置一个cookie在WCF和阅读在客户端。这是我的代码没有做到这一点。
服务器端(C#在WCF):
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的值(我希望会包含我的“云变量=寂寞“cookie)是
Server: ASP.NET Development Server/10.0.0.0 Date: Wed, 04 Apr 2012 15:29:27 GMT X-AspNet-Version: 4.0.30319 Content-Length: 17 Cache-Control: private Content-Type: application/json; charset=utf-8 Connection: Close
(NB我的网页(包括JavaScript)和WCF服务驻留在同一台服务器上所以应该没有跨域问题。)
我是否正确设置响应头cookie?如果是的话,我应该在哪里寻找客户端的价值?如果不是,我应该怎么做?
响应头我不知道帮助 - 读取和写入cookie在客户端上没有问题是什么,而它是关于如何在客户端和服务器WCF并返回给客户端之间传输的cookie。 – dumbledad 2012-06-26 09:49:09