跨域 cookie 到底应该怎么实现?我需要在 domain-1.com 通过 jquery 调用 domain-2.com 上的 PHP 写 cookie,在 domain-1.com 上读取,有可能实现么?

2021-02-07 11:29:39 +08:00
 wjpauli

domain-2.com/setcookie.php 上设置 cookie:

setcookie('test', 1234, time() + 31536000, '/', 'www.domain-1.com');

domain-2.com/.htaccess

Header add Access-Control-Allow-Origin: http://www.domain-1.com
Header add Access-Control-Allow-Credentials: true

使用 jquery 在 domain-1.com 上调用 domain-2.com/setcookie.php

$.ajax({url: 'domain-2.com/setcookie.php', dataType : 'json', crossDomain: true, xhrFields: {withCredentials: true}});

domain-1.com/test.php 上读取$_COOKIE['test']

结果:jquery 的 ajax call 显示 setcookie was blocked 。

看了很多文档提到只要设置好 Allow-Credentials 和 withCredentials 就可以了,指的不是这种情况么

2993 次点击
所在节点    PHP
26 条回复
sanmaozhao
2021-02-07 11:33:08 +08:00
domain-2.com 的页面无法往 domain-1.com 写 cookie
sub2.domain.comsub1.domain.com 才可以
brust
2021-02-07 14:32:25 +08:00
用 token 不好吗
kongyian
2021-02-07 14:34:52 +08:00
参数加密传递吧
YouLMAO
2021-02-07 14:39:05 +08:00
大哥, 不能读 /写 跨域 cookie, 这是法则, 互联网不是法外之地

Allow-Credentials
指 zhifubao 服务器允许你将 zhifubao 用户的 cookie 发给服务器

不是允许你读写 zhifubao 用户的 cookie, 这他妈偷钱都可以了
moreant
2021-02-07 15:38:32 +08:00
csrf 我自己?
huanruke
2021-02-07 15:41:02 +08:00
我也一直在寻找这样的财富密码 T.T
meepo3927
2021-02-07 15:56:58 +08:00
没有 跨域 cookie 这一说法吧
Ariver
2021-02-07 16:04:47 +08:00
如果两个域名都在你的控制之下就可以
chinvo
2021-02-07 16:08:02 +08:00
domain 2 set cookie 的时候 set 到 domain 1 就可以
vvmap
2021-02-07 17:05:16 +08:00
这是啥操作,a.foo.comb.foo.com 可以互相取到 cookie; 但是 a.comb.com 之间 cookie 是限制获取的。4 楼说的很对了,这是规则
mostkia
2021-02-07 17:23:40 +08:00
反向代理把 domain-2.com 地址代里到 domain-1.com 的某个目录里,然后去这个目录里访问你说的 php 地址,就应该不会跨域了。
onec
2021-02-07 17:31:31 +08:00
要是跨域能读到 cookie, 做钓鱼网站的不是想拿啥拿啥
kmonster
2021-02-07 17:50:41 +08:00
你应该是说 session 跨域使用吧,用 redis 来做 session 共享;
cookie 是带着 sessionId 去服务器校验 session,如果你的 session 没有做共享,A 服务器的 session 无法在 B 服务器使用
YouLMAO
2021-02-07 23:26:53 +08:00
@kmonster

两个站点分开登录如何共享呢?

等同于,你的两个手机共享 sessionid
S4m
2021-02-08 10:20:57 +08:00
为什么不能直接用 oAuth ?
darknoll
2021-02-08 11:35:56 +08:00
不能实现,第三方 cookie 屏蔽,你怎么折腾都没用
wjpauli
2021-02-08 14:19:20 +08:00
@brust 涉及到现有项目重构
wjpauli
2021-02-08 14:24:21 +08:00
@Ariver 烦请看下我的代码,哪里错了。
@chinvo 烦请看下我的代码,哪里错了,我的代码就是在 domain-2 set cookie 到 domain-1,但是 chrome 显示 blocked 。但是我现在可以实现 domain-1 通过 ajax 调用 domain-2 的 php 脚本设置 cookie 到 domain-2 。

@vvmap 他说的那是两个不同归属的网站,我说的是 domain-1.com 通过 ajax 调用 domain-2.com ,这叫 cors,完全是两回事。
chinvo
2021-02-08 15:17:16 +08:00
@wjpauli #16 时间过去有点久忘了当年怎么弄的了。现在的浏览器会拦截这种给其他域名 set cookie 。

你试试 p3p,不知道现在还能用么。
wjpauli
2021-02-08 16:26:14 +08:00
@chinvo p3p 是在 domain-1 里使用 iframe 调用 domain-2,设置 domain-2 下面的 cookie,现在这些 adsense 类的广告都是这么插的。思来想去我决定放弃 session+cookie 改用 token 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/752006

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX