Tôi có một WC.NET aspF trên .NET 4. Dịch vụ này được sử dụng để xác thực người dùng. Chúng tôi đang gửi một tên người dùng và mật khẩu và sau đó một Tiêu đề HTTP nên được trả lại với cookie xác thực được bao gồm. Sử dụng trang thử nghiệm được lưu trữ cục bộ, trang này hoạt động chính xác. Bây giờ tôi đang truy cập để truy cập vào tên miền chéo thông tin tiêu đề. Tôi đã cài đặt trang thử nghiệm của mình trên một máy khác và được định cấu hình để gọi qua WCF. Cuộc gọi đang hoạt động và trả lời 'dữ liệu' trong cuộc gọi là chính xác. Tuy nhiên, tôi không thể truy cập các thông tin tiêu đề với một trong hai điều sau đây:xmlHttp.getResponseHeader + Không hoạt động cho CORS
alert(xmlHttp.getAllResponseHeaders());
hoặc
alert(xmlHttp.getResponseHeader("Set-Cookie"));
Sử dụng trình gỡ lỗi trong IE và 'Tiêu đề HTTP Live' cắm cho Firefox, tôi có thể xem thông tin tiêu đề đang được trả về.
Trong trang ajax toàn cầu của tôi, tôi đang thiết lập phản hồi để xử lý CORS.
private void EnableCrossDomainAjaxCall()
{
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "*");
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.AddHeader("Cache-Control", "no-cache");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE");
HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "Content-Type, Accept");
HttpContext.Current.Response.AddHeader("Access-Control-Max-Age", "1728000");
HttpContext.Current.Response.End();
}
}
Đây là AJAX Tôi đang sử dụng để gọi các dịch vụ:
$("#btnLogin").click(function (e) {
var geturl;
geturl = $.ajax({
// type: "POST",
type: "GET",
contentType: "application/json; charset=utf-8",
url: 'http://10.0.4.66/AuthenticationService.svc/Login?Name=test&password=pwsd',
// url: '../SecurityServer/AuthenticationService.svc/Login?Name=test&password=pwsd',
dataType: "jsonp",
error: function (request, status, error) {
alert('Error Occured');
},
crossdomain: true,
success: function (data, textStatus, xmlHttp) {
// alert(xmlHttp.getResponseHeader("Content-Type"));
document.write(xmlHttp.getResponseHeader("Content-Type") + "<br/>");
alert(xmlHttp.getAllResponseHeaders());
alert(xmlHttp.getResponseHeader("Set-Cookie"));
var headers = '';
var headerPair = xmlHttp.getAllResponseHeaders('wcfCookie').split("\r\n");
var output = '';
$.each(headerPair, function (key, line) {
var parts = line.split(':');
if (parts[0] == 'wcfCookie') {
ChocChip = parts[1]
return false
}
});
}
});
Dưới đây là thông tin tiêu đề của tôi túm lấy từ
Date: Mon, 04 Feb 2013 12:12:40 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 4.0.30319
Access-Control-Allow-Origin: *
Set-Cookie: wcfCookie=8D38D5D6A0F138FEB595DD016F7694EDDF3E6757C82ED3D419F5047A5294974C1885487465CEC0A0BCC2B3802C7B03FF9F5370A05D4CCBDDDABCB1558C3816044BF4F78209BF38C6B1A7CAD34CD3C85C40B8515CFB1C2B2694BC78803D8DACB4
Content-Length: 65
Cache-Control: application/json; charset=utf-8
Content-Type: application/x-javascript