Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript无法访问跨域Cookie_Javascript_Php_Extjs_Cookies_Cross Domain - Fatal编程技术网

Javascript无法访问跨域Cookie

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),服务

我在上有一个EXTJS应用程序,在上有一个服务器端Laravel应用程序

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

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

现在,我的饼干的名字是时间。 firebug中的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
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将自动发送