2012-04-20 58 views
9

我正在開發一個REST Api,它需要有狀態(沒有解決方法,我使用的是沒有可序列化對象的本機庫等等)Set-Cookie Header在響應中,但瀏覽器在下次請求中未設置Cookie

此Rest API暴露在域domainA上的Web服務器上。 響應包含設置爲*的Access-Control-Allow-Origin頭,所以我不需要JSON-P。 (我不知道這個細節是否關心)。

我在請求DomainA的domainB上做了此API的GWT使用示例。瀏覽器不會添加之前設置的cookie。這是'無國界'的作品。

樣本是否也必須在DomainA上? 是否有一個workaroud或一個特定的標題設置?

編輯: 我在Cookie中設置了一個主域。它不起作用。瀏覽器仍然不會在下一個請求標頭中設置cookie會話。

請求:

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 

響應:

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

對此的任何更新。你是如何解決這個問題的 – 2014-04-16 08:22:29

回答

2

按照standards spec正確的語法是:

的Set-Cookie報頭= 「設置Cookie:」 SP set-cookie-string
set-cookie-string = cookie-pair *(「;」SP cookie-av)
cookie的對= cookie的名字「=」 cookie的值
...

因此,似乎有什麼你缺少的是每一個分號後空格字符。

相關問題