domain-2.com/setcookie.php 上设置 cookie:
setcookie('test', 1234, time() + 31536000, '/', 'www.domain-1.com');
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 就可以了,指的不是这种情况么
1
sanmaozhao 2021 年 2 月 7 日 |
2
brust 2021 年 2 月 7 日
用 token 不好吗
|
3
RLWGQ0AI4MAvYy36 2021 年 2 月 7 日
参数加密传递吧
|
4
YouLMAO 2021 年 2 月 7 日 大哥, 不能读 /写 跨域 cookie, 这是法则, 互联网不是法外之地
Allow-Credentials 指 zhifubao 服务器允许你将 zhifubao 用户的 cookie 发给服务器 不是允许你读写 zhifubao 用户的 cookie, 这他妈偷钱都可以了 |
5
moreant 2021 年 2 月 7 日 via iPhone
csrf 我自己?
|
6
huanruke 2021 年 2 月 7 日
我也一直在寻找这样的财富密码 T.T
|
7
meepo3927 2021 年 2 月 7 日
没有 跨域 cookie 这一说法吧
|
8
Ariver 2021 年 2 月 7 日 via iPhone
如果两个域名都在你的控制之下就可以
|
9
chinvo 2021 年 2 月 7 日 via iPhone
domain 2 set cookie 的时候 set 到 domain 1 就可以
|
10
vvmap 2021 年 2 月 7 日
|
11
mostkia 2021 年 2 月 7 日
反向代理把 domain-2.com 地址代里到 domain-1.com 的某个目录里,然后去这个目录里访问你说的 php 地址,就应该不会跨域了。
|
12
onec 2021 年 2 月 7 日 要是跨域能读到 cookie, 做钓鱼网站的不是想拿啥拿啥
|
13
kmonster 2021 年 2 月 7 日
你应该是说 session 跨域使用吧,用 redis 来做 session 共享;
cookie 是带着 sessionId 去服务器校验 session,如果你的 session 没有做共享,A 服务器的 session 无法在 B 服务器使用 |
15
Cipher0 2021 年 2 月 8 日
为什么不能直接用 oAuth ?
|
16
darknoll 2021 年 2 月 8 日
不能实现,第三方 cookie 屏蔽,你怎么折腾都没用
|
18
wjpauli OP @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,完全是两回事。 |
19
chinvo 2021 年 2 月 8 日 via iPhone
|
20
wjpauli OP @chinvo p3p 是在 domain-1 里使用 iframe 调用 domain-2,设置 domain-2 下面的 cookie,现在这些 adsense 类的广告都是这么插的。思来想去我决定放弃 session+cookie 改用 token 。
|
22
justfun 2021 年 2 月 10 日
|
23
justfun 2021 年 2 月 10 日
跨域资源共享 CORS 详解
http://www.ruanyifeng.com/blog/2016/04/cors.html |
25
laozhoubuluo 2021 年 2 月 11 日
两个不同的域名,肯定是不能直接读取 Cookie 的。
只能是在 domain-1.com 的前端上让 jQuery 去请求一个 domain-2.com 的接口,让他把 domain-2.com 上的 test Cookie 发过来,完了 domain-1.com 前端再根据返回值决定业务状态。 拿到返回值之后,不管是写到 domain-1.com 的 cookie,还是直接拼接到请求里面提交给后端都可以。 |
26
markgor 2021 年 2 月 16 日
withCredentials 印象中只能传不能写吧?
你需求是访问 A,通过 AJAX 请求 B,把 B 的结果写入 A 的 cookie 里面? 如果是这样,可以尝试: 方案 1: A 发送请求 B,B 不需要通过 cookie,直接返回 response text,然后再发 ajax 请求去 A 设定 cookie 。 (涉密可以通过 openssl 加密返回内容,在 a 的请求位置上解密即可。 方案 2: 页面通过 AJAX 请求 A,A 通过 curl 请求 B,再把 COOKIE 传递回去。(即 B 的 ajax 访问改为 A 通过 CURL 访问) |