1
archer2ee 2016-05-27 22:00:40 +08:00 via iPhone 1
设置 Allow-Control-Allow-Credentials ,使得跨域可以带 Cookie ;同时要设置 Allow-Control-Allow-Origin ,此时不能用通配符。
|
2
huijiewei 2016-05-27 22:02:26 +08:00
关键字 withCredentials
但是也有限制,就是跨域服务端只能读不能写 |
3
jugelizi 2016-05-27 22:05:04 +08:00
你都知道跨域了 5000 端口的 cookie 怎么可能给你 8000 端口获取到?
接口的 cookie 保存了后台仍然可以获取到 |
4
shiji 2016-05-27 22:22:18 +08:00 via Android 1
我个人觉得不是跨域的问题, cookie 是不分端口的。
参考 RFC6265 For historical reasons, cookies contain a number of security and privacy infelicities. For example, a server can indicate that a given cookie is intended for "secure" connections, but the Secure attribute does not provide integrity in the presence of an active network attacker. Similarly, cookies for a given host are shared across all the ports on that host, even though the usual "same-origin policy" used by web browsers isolates content retrieved via different ports. 。。 8.5. Weak Confidentiality Cookies do not provide isolation by port. If a cookie is readable by a service running on one port, the cookie is also readable by a service running on another port of the same server. If a cookie is writable by a service on one port, the cookie is also writable by a service running on another port of the same server. For this reason, servers SHOULD NOT both run mutually distrusting services on different ports of the same host and use cookies to store security sensitive information. |
5
lizon 2016-05-27 22:53:13 +08:00 1
|
6
pimin 2016-05-27 23:04:35 +08:00
我理解的,你 8000 端口返回一个 cookie 给浏览器,但是现在用 js 在前台无法获取.
cookie 是可以本地改写 ,你 8000 端口返回一个包含 cookie 的 json 给前端 js,js 设置浏览器 cookie 不就好了? |
7
wentx 2016-05-28 02:15:43 +08:00 1
http-only?
|
8
fuermosi777 2016-05-28 04:17:43 +08:00 1
我之前有过类似的问题,最后弄了一个简单的 nginx 把两个端口都反代到一个统一端口了。
|
9
chaegumi 2016-05-28 07:09:39 +08:00 1
同一个域名还是不同域名,同一个域名,只要把 cookie 的 domain 设置主顶域,这样不就行了,端口会不会有影响我不知道
|
10
julor 2016-05-28 07:35:34 +08:00 via Android
@fuermosi777 对,这招不错,我们也这样用
|
11
JhOOOn OP @archer2ee
@fuermosi777 像楼上 2 位说的, 之前做了相关配置,还是不能用。 django-cors-headers 自带这种设置, nginx 也配置了。 后来 ajax 使用 jsonp 的方式,前端就可以自动保存 cookie 了,但是只支持 get 的方式。 最后决定先使用 token 的方式吧。 @chaegumi 这种方式还没试。 @wentx 好像看网上说不关这个的事 @shiji 好牛,专门找来文档。 已打赏,谢谢楼上所有的人,耐心的解答了。 |
12
JhOOOn OP @lizon 之前看过,没当回事,后来看到 jsonp ,好用了,但目的不一样,对 js 的理解也不深,改用其他方式了,谢谢,已打赏。
|
13
JhOOOn OP @fuermosi777 早上同时提醒我,将前端发送 ajax 里的地址的前缀信息去掉,就好用了。( http://a.com/api -> /api )
|