2010-11-18 23 views
5

Tôi cần một cookie HttpOnly xác thực để làm việc trên:đa-sub-domain và các vấn đề ajax

mydomain.com 
www.mydomain.com 
abc.mydomain.com 

vì vậy mà tôi có thể đăng nhập vào tất cả ba nơi thông qua một đăng nhập duy nhất.

này đang làm việc tốt, bằng cách thiết lập tên miền cookie của tôi để:

.mydomain.com 

đây là tiêu đề phản ứng mà bộ cookie:

MYAUTHCOOKIE=FOO; domain=.mydomain.com; path=/; HttpOnly 

này tất cả hoạt động tốt cho các yêu cầu trình duyệt bình thường.

Tuy nhiên, tôi cần thực hiện yêu cầu AJAX từ mydomain.comwww.mydomain.com đến abc.mydomain.com.

Khi tôi thực hiện yêu cầu, nó không chuyển cookie xác thực. Tại sao điều này, và những gì tôi có thể làm gì về nó?

Nếu tôi thực hiện một yêu cầu đến máy chủ giống như trang JS nằm trên, nó gửi cookie: s

Đây là mã yêu cầu của tôi:

$.ajax({ 
    type: "POST" 
    , data: { data: { foo: bar} } 
    , dataType: "json" 
    , url: "http://abc.mydomain.com/foo" 
    , timeout: 5000 
    , success: function (data, textStatus) { 
     alert('woo!'); 
    } 
    , error: function (xhr, textStatus, error) { 
     alert('meh'); 
    } 
}); 

Đây có phải là một số chính sách tên miền chéo ? Tại sao miền cookie không thực hiện công việc này?

Cảm ơn

Trả lời

1

Theo same origin policy, tên miền phụ là thực sự "thù địch" để tên miền của bạn, nhưng nó có thể được cố định bằng cách thiết lập document.domain (giống bài viết).

+0

Nếu bạn đặt document.domain thành 'foo.com' trên URL http://one.foo.com/, làm cách nào máy chủ biết cài đặt document.domain trên http://two.foo.com/ trước nó làm cho yêu cầu 'hai'? –

+0

Làm thế nào để yêu cầu CORS có tiêu đề kiểm soát truy cập ảnh hưởng đến tình trạng này? – Mnebuerquo

Các vấn đề liên quan