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-02-07 11:33:08 +08:00 1
|
2
brust 2021-02-07 14:32:25 +08:00
用 token 不好吗
|
3
RLWGQ0AI4MAvYy36 2021-02-07 14:34:52 +08:00
参数加密传递吧
|
4
YouLMAO 2021-02-07 14:39:05 +08:00 2
大哥, 不能读 /写 跨域 cookie, 这是法则, 互联网不是法外之地
Allow-Credentials 指 zhifubao 服务器允许你将 zhifubao 用户的 cookie 发给服务器 不是允许你读写 zhifubao 用户的 cookie, 这他妈偷钱都可以了 |
5
moreant 2021-02-07 15:38:32 +08:00 via iPhone
csrf 我自己?
|
6
huanruke 2021-02-07 15:41:02 +08:00
我也一直在寻找这样的财富密码 T.T
|
7
meepo3927 2021-02-07 15:56:58 +08:00
没有 跨域 cookie 这一说法吧
|
8
Ariver 2021-02-07 16:04:47 +08:00 via iPhone
如果两个域名都在你的控制之下就可以
|
9
chinvo 2021-02-07 16:08:02 +08:00 via iPhone
domain 2 set cookie 的时候 set 到 domain 1 就可以
|
10
vvmap 2021-02-07 17:05:16 +08:00
|
11
mostkia 2021-02-07 17:23:40 +08:00
反向代理把 domain-2.com 地址代里到 domain-1.com 的某个目录里,然后去这个目录里访问你说的 php 地址,就应该不会跨域了。
|
12
onec 2021-02-07 17:31:31 +08:00 1
要是跨域能读到 cookie, 做钓鱼网站的不是想拿啥拿啥
|
13
kmonster 2021-02-07 17:50:41 +08:00
你应该是说 session 跨域使用吧,用 redis 来做 session 共享;
cookie 是带着 sessionId 去服务器校验 session,如果你的 session 没有做共享,A 服务器的 session 无法在 B 服务器使用 |
15
S4m 2021-02-08 10:20:57 +08:00
为什么不能直接用 oAuth ?
|
16
darknoll 2021-02-08 11:35:56 +08:00
不能实现,第三方 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-02-08 15:17:16 +08:00 via iPhone
|
20
wjpauli OP @chinvo p3p 是在 domain-1 里使用 iframe 调用 domain-2,设置 domain-2 下面的 cookie,现在这些 adsense 类的广告都是这么插的。思来想去我决定放弃 session+cookie 改用 token 。
|
22
justfun 2021-02-10 00:56:35 +08:00
|
23
justfun 2021-02-10 00:57:41 +08:00
跨域资源共享 CORS 详解
http://www.ruanyifeng.com/blog/2016/04/cors.html |
25
laozhoubuluo 2021-02-11 17:41:52 +08:00
两个不同的域名,肯定是不能直接读取 Cookie 的。
只能是在 domain-1.com 的前端上让 jQuery 去请求一个 domain-2.com 的接口,让他把 domain-2.com 上的 test Cookie 发过来,完了 domain-1.com 前端再根据返回值决定业务状态。 拿到返回值之后,不管是写到 domain-1.com 的 cookie,还是直接拼接到请求里面提交给后端都可以。 |
26
markgor 2021-02-16 17:58:53 +08:00
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 访问) |