2012-04-20 34 views
9

Tôi đang phát triển một REST Api cần phải được statefull (không có workaround cho rằng, tôi đang sử dụng một lib bản địa không có đối tượng serializable vv)Set-Cookie Header là trong phản ứng nhưng trình duyệt không đặt Cookie trong yêu cầu tiếp theo

API phần còn lại này được hiển thị trên máy chủ web trên miền miềnA. Phản hồi chứa tiêu đề Access-Control-Allow-Origin được đặt thành *, vì vậy tôi không cần JSON-P. (Tôi không biết nếu chi tiết này quan tâm).

Tôi đã sử dụng mẫu GWT của API này trên miền B yêu cầu DomainA. Các trình duyệt không thêm cookie được đặt trước đó. Nó hoạt động 'phi pháp'.

Phải mẫu trên DomainA? Có một workaroud hoặc một tiêu đề cụ thể để thiết lập?

Chỉnh sửa: Tôi đặt tên miền chính trong Cookie. Và nó không hoạt động. Trình duyệt vẫn không đặt phiên cookie trong tiêu đề yêu cầu tiếp theo.

Yêu cầu:

HeadersPreviewResponseCookiesTiming 
Request URL:http://subdomainB.mydomain.com/request 
Request Method:POST 
Status Code:200 OK 
Request Headersview source 
Accept:*/* 
Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3 
Accept-Encoding:gzip,deflate,sdch 
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4 
Connection:keep-alive 
Content-Length:1185 
Content-type:application/x-www-form-urlencoded 
Host:subdomainB.mydomain.com 
Origin:http://subdomainA.mydomain.com 
Referer:http://subdomainA.mydomain.com/BLABLABLA 
User-Agent:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/536.8 (KHTML, like Gecko) Chrome/20.0.1105.0 Safari/536.8 

đáp ứng:

Response Headersview source 
Access-Control-Allow-Origin:* 
Cache-Control:no-cache, no-store, max-age=0 
Connection:Keep-Alive 
Content-Language:fr-FR 
Content-Type:application/json;charset=UTF-8 
Date:Wed, 25 Apr 2012 07:59:03 GMT 
Expires:Thu, 01 Jan 1970 00:00:00 GMT, Thu, 01 Jan 1970 00:00:00 GMT 
Keep-Alive:timeout=15, max=100 
Pragma:no-cache 
Server:Jetty(7.5.4.v20111024) 
Set-Cookie:JSESSIONID=cookieValue;Path=/;Domain=.mydomain.com 
Transfer-Encoding:chunked 
+2

mọi cập nhật về điều này. bạn đã giải quyết vấn đề này như thế nào –

Trả lời

2

Theo standards spec cú pháp đúng là:

set-cookie-header = "Set-Cookie:" SP set-cookie-string
set-cookie-string = cookie-pair * (";" SP cookie-av)
cookie cặp = Cookie-name "=" cookie có giá trị
...

Vì vậy, có vẻ như những gì bạn đang thiếu là một nhân vật không gian sau mỗi dấu chấm phẩy.

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