当我们在www.a.com这个域下用ajax提交一个请求到www.b.com这个域的时候,默认情况下,浏览器是不允许的,因为违反了浏览器的同源策略。解决方案可以参考笔者的这篇博文:http://www.cnblogs.com/anai/p/4227157.html

  这里要讨论的是跨域中遇到的另一个问题,就是当提交一个请求到www.b.com这个域时,后台尝试在响应中绑定cookie信息,以告知浏览器去保存这个cookie,但是默认情况下,浏览器是不会去为你创建cookie的,具体现象就是你发现在响应中已经有set-cookie的响应头了并且有值,而且浏览器也会有信息显示已接收到cookie了,但是就是在cookie中找不到。没错,该现象就是因为你是跨域提交的创建cookie的请求。那么如果我们非要浏览器去创建这个cookie怎么办呢?这里就要使用到一个xmlHttpRequest对象的属性xhrFields,官方文档的解释如下:

A map of fieldName-fieldValue pairs to set on the native XHR object. For example, you can use it to setwithCredentials to true for cross-domain requests if needed.

  意思就是该属性是一个用来配置xhr对象的键值对,比如你可以在跨域请求有需要的时候设置withCredentials:true

  那么withCredentials:true是什么意思?

  该属性是告诉浏览器,1、允许创建来自不同域的cookie信息;2、每次的跨域请求都允许带上该cookie信息

  该配置项还需要后台的允许才有效,后台如果允许浏览器发送带凭据的请求,那么会在响应头中带上"Access-Control-ALLOW-Credentials",值为"true"。

  如果不加此响应头,浏览器将获取不到服务端的响应体。

  好了,到此我们已经知道怎么跨域创建cookies,并在每次的跨域请求中带上cookies了,简单的说就是前台要配置一个ajax参数:xhrFields:{withCredentials:true},有的资料上说还要设置crossDomain:true,但是笔者测试好像不需要;后台要在响应头中绑定"Access-Control-ALLOW-Credentials",值为"true"。

转载于:https://www.cnblogs.com/anai/p/4238777.html

浏览器中跨域创建cookie的问题相关推荐

  1. chrome浏览器跨域Cookie的SameSite问题导致访问iframe内嵌页面异常

    问题还原 通过cas单点登陆访问系统,通过一个系统内嵌入第三方系统的页面,同时第三方系统也配置了cas.访问一个系统跳转到登陆页面,然后内嵌入iframe中的第三方系统又进入登陆页面. 初步分析,该系 ...

  2. springcloud微服务中跨域配置

    跨域,指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对 javascript 施加的安全限制. 同源策略,指的是协议,域名,端口都要相同,其中有一个不同都会产生跨域. 跨域 ...

  3. [导入][转]跨越域的Cookie

    所有的网站开发者都会非常喜欢cookie的强大特性和易用性,它在跟踪用户信息,建设人性化.个性化的网站方面,有着强大的作用,而且,又避免了使用数据库的昂贵开销.但是,cookie却不能跨越域传递,只有 ...

  4. 转载 - 通过设置P3P头来实现跨域访问COOKIE

    作者:老王 网上看了别人介绍的一片文章,说使用P3P可以完成跨域COOKIE操作,感觉很COOL,不过没有提供源代码,我胡乱写了一下,大家看看. 实际工作中,类似这样的要求很多,比如说,我们有两个域名 ...

  5. 浏览器跨域访问解决方案

    浏览器跨域访问解决方案 2015年11月4日 18972次浏览 跨域的概念 跨域大家都知道,不同地址,不同端口,不同级别,不同协议都会构成跨域.例如:about.haorooms.com和www.ha ...

  6. PHP 通过设置P3P头来实现跨域访问COOKIE

    我的是CentOS的系统(Linux 内核) 编辑HOST vi /etc/hosts 加入 127.0.0.1        www.a.com 127.0.0.1        www.b.com ...

  7. nginx解决浏览器跨域问题_前端通过Nginx反向代理解决跨域问题

    在前面写的一篇文章SpringMVC解决跨域问题,我们探讨了什么是跨域问题以及SpringMVC怎么解决跨域问题,解决方式主要有如下三种方式: JSONP CORS WebSocket 可是这几种方式 ...

  8. 前后端分离单点登录SSO实现方案 淘宝、京东跨域获取Cookie、OAuth2、QQ客户端多种模式

    演示Demo站点 http://sso.exrick.cn 开源版Github地址 https://github.com/Exrick/x-boot) 开发文档 https://www.kanclou ...

  9. java学习之服务器第26天( --form表单-- 四大域对象--cookie)

    你想要多大的成功, 你愿意为这份成功付出什么? 1.form表单 定义: 相当于一个控件集合,里面包含多个控件,点"提交"后会把表单中的所有控件的值都传给action到的页面: 通 ...

最新文章

  1. 非线性回归模型java_R中的非线性多元回归
  2. UI设计培训需要学哪些内容
  3. 查看mysql版本不一致_MySQL-版本不一致
  4. 超越 一切还刚刚开始
  5. 南大电子机器人入驻云南_园区优秀企业| 中科恒清清淤机器人,以智能科技为水环境治理保驾护航...
  6. INS-13001环境不满足最低要求
  7. [转]CMS Content Management System(内容管理系统) 提供商
  8. java中常量池存的是什么_Java中常量池是什么?Java常量池的介绍
  9. 解决 mac系统下sublime imput 函数交互问题
  10. linux下查看book文件夹,Linux初级入门百篇-find命令
  11. python中sys的用法
  12. DQ77KB升级bios和AMT设置
  13. Eigen学习记录1-Affine3f 仿射变换矩阵
  14. 执行node的http或https报了个错:Error: socket hang up
  15. vscode和sqlite3的环境配置
  16. 在web前段,最挣扎的问题尽然是单词!
  17. Java SE 控制流程(今天本君不早朝)
  18. Microsoft COCO: Common Objects in Context - 目标检测评估 指标(Detection Evaluation)
  19. android 弹簧震动动画,Android-Rebound(弹簧系统-让动画不再僵硬)的简单使用与源码分析...
  20. ora-01407 无法更新 值 为null

热门文章

  1. openStack Packages yum upgrade
  2. SQL Server中以独占的方式操作表
  3. android builder布局方式,android – AlertDialog.Builder与自定义布局和EditText;无法访问视图...
  4. java的for循环取出数据只是拿到最后一个_如何保证缓存与数据库双写的一致性...
  5. 域名升级访问中拿笔记好_SEO优化中如何让你的页面访问速度更快
  6. linux 容器_Linux容器的幕后花絮
  7. 云原生应用程序_什么是云原生应用程序?
  8. 印度软件和中国软件工程师_印度社区如何支持隐私和软件自由
  9. 开源项目贡献者_扩大项目贡献者基础的5种方法
  10. 查期刊是否开源_新期刊HardwareX促进科学的开源硬件