Javascript无法访问跨域Cookie
我在上有一个EXTJS应用程序,在上有一个服务器端Laravel应用程序 我注意到一些浏览器(如Safari或旧IE)默认设置了非常严格的Cookie隐私设置。最后,如果浏览器不接受cookie,我的laravel_会话cookie将无法保存,用户也无法登录 我的想法是,只有当cookies无法保存在当前浏览器中时,才为用户显示正确的信息。因此,在我的ExtJS的应用程序启动时,在初始化之后,我将向服务器发送一个自定义Ajax GET请求(从domain1.com到domain2.com),服务器将返回一个带有示例Cookie的Set Cookie头。 如果保存cookie,则表示浏览器的设置正常(如果我错了,请更正) 现在,我的饼干的名字是时间。 firebug中的ajax响应如下所示:Javascript无法访问跨域Cookie,javascript,php,extjs,cookies,cross-domain,Javascript,Php,Extjs,Cookies,Cross Domain,我在上有一个EXTJS应用程序,在上有一个服务器端Laravel应用程序 我注意到一些浏览器(如Safari或旧IE)默认设置了非常严格的Cookie隐私设置。最后,如果浏览器不接受cookie,我的laravel_会话cookie将无法保存,用户也无法登录 我的想法是,只有当cookies无法保存在当前浏览器中时,才为用户显示正确的信息。因此,在我的ExtJS的应用程序启动时,在初始化之后,我将向服务器发送一个自定义Ajax GET请求(从domain1.com到domain2.com),服务
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
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
我试过很多组合。
每次
console.log(document.cookie)
返回一个空字符串
“时间”cookie在firebug>Cookies中可见,它不仅仅是httponly
“时间”的“过期”大于我当前的浏览器/计算机日期
我尝试将cookie的“路径”设置为“/”或空字符串
我尝试将cookie的“域”设置为“.domain1.com”、“extjs.domain1.com”
我做错了什么?document.cookie总是空的,但是firefox告诉我存在一个非httponly cookie
我注意到铬有点不同。
响应集Cookie如下所示:
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
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中,我可以在开发工具>网络选项卡>xhr请求>cookies选项卡中看到cookies。我在Dev tools>Resources>Cookies>extjs.domain1.com中看不到cookie我在@AralRoca遇到了同样的问题,我担心我最后没有解决这个问题……我发现如果cookie只有
http
就不可能通过javascript访问。但是如果您将标志withCredentials=true
放入请求中,cookie将自动发送