我有一些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