Alex là đúng! Đây là giải pháp đầy đủ. (Nó không hoạt động với IE8 và IE9!)
Bạn cần đặt withCredentials ở phía máy khách. Kể từ jQuery 1.5.1, bạn có thể làm như hình dưới đây (Source). Đối với phiên bản cũ hơn, hãy theo dõi white rabbit.
$.ajax({
url: a_cross_domain_url,
xhrFields: {
withCredentials: true
}
});
Ở phía máy chủ, bạn phải cho phép tùy chọn cài đặt, cho phép thông tin xác thực và cho phép xuất xứ. Nguồn gốc ký tự đại diện không được phép! Nhưng bạn có thể đọc nguồn gốc từ tiêu đề yêu cầu :)
// auto adapted Access Control to origin from request header.
$headers = apache_request_headers();
foreach ($headers as $header => $value) {
if ($header == 'Origin')
header('Access-Control-Allow-Origin: ' . $value, true);
}
// send cookies from client
header('Access-Control-Allow-Credentials: true', true);
// allow all methods
header('Access-Control-Allow-Methods: GET, POST, OPTIONS', true);
Đừng quên thêm DELETE và PUT vào Access-Control-Allow-Method nếu bạn đang sử dụng REST –