Javascript无法访问跨域Cookie

时间:2016-02-03 12:51:42

标签: javascript php extjs cookies cross-domain

我在http://extjs.domain1.comhttp://domain2.com上的服务器端Laravel应用程序上有一个EXTJS应用程序。

我注意到某些浏览器(如Safari或旧IE)默认设置了非常严格的Cookie隐私设置。最后,如果浏览器不接受cookie,则无法保存我的laravel_session cookie,用户无法登录。

我的想法是,只有在当前浏览器中无法保存cookie时,才能为用户显示正确的信息。所以,在我的ExtJS的应用程序启动时,在它初始化之后,我向服务器发送一个自定义的Ajax GET请求(从domain1.com到domain2.com),服务器返回一个包含示例cookie的Set-Cookie头。 如果保存了cookie,则意味着浏览器的设置正常(如果我错了,请纠正我)。

现在,我的cookie名称是Time。 萤火虫中的ajax响应如下:

HTTP/1.1 200 OK

Date: Wed, 03 Feb 2016 12:19:32 GMT

Server: Apache

Set-Cookie: Time=1454511121; expires=Wed, 03-Feb-2016 14:54:11 GMT; Max-Age=9279; path=/; laravel_session=LONG---SESSION---KEY; expires=Wed, 03-Feb-2016 14:19:32 GMT; Max-Age=7200; path=/; httponly

Cache-Control: no-cache

Access-Control-Allow-Origin: http://extjs.domain1.com

Access-Control-Allow-Methods: GET, POST, PUT, DELETE

Access-Control-Allow-Headers: Origin, Content-Type

Access-Control-Allow-Credentials: true

Keep-Alive: timeout=5, max=100

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: application/json

我尝试过很多种组合。 <每次

console.log(document.cookie)

返回一个空字符串。

“时间”Cookie在firebug中可见&gt;饼干,它不是httponly。

“时间”的“过期”大于我当前的浏览器/计算机日期。

我尝试将Cookie的“路径”设置为“/”或空字符串。

我尝试将Cookie的“域名”设置为“.domain1.com”,“extjs.domain1.com”。

我做错了什么? document.cookie总是空的,但firefox告诉我有一个非httponly cookie。

我注意到铬有点不同。 响应Set-Cookie如下所示:

Set-Cookie:Time=1454511121; expires=Wed, 03-Feb-2016 14:54:11 GMT; Max-Age=7715; path=/;
Set-Cookie:laravel_session=LONG---SESSION---KEY; expires=Wed, 03-Feb-2016 14:45:36 GMT; Max-Age=7200; path=/; httponly

有两个Set-Cookie标头,但我读到它应该不是问题。

在Chrome中,我可以在开发工具中看到Cookie&gt;网络标签&gt; xhr请求&gt; Cookies标签。我在Dev工具中看不到cookie&gt;资源&gt;饼干&gt; extjs.domain1.com

0 个答案:

没有答案