最近在做运动城项目,这一个项目下面有多个子项目,如主数据项目,pos项目等。主数据项目的域名为www.topmall.com,POS项目的域名为pos.topmall.com。即两个项目的主域名相同,子域名不相同。

  我们的登陆认证是放在主数据项目的,即进入POS项目如果检测未登陆,是先要调用主数据的一个登陆接口登陆后才可以访问的。这时候跨域问题就出现了,进入POS项目之后跳出登陆框,输入用户名密码请求主数据的http://www.topmall.com/signin进行登陆,看到返回的response里面也有Set-cookie,但是再次请求POS项目的http://pos.topmall.com/pos/cashier/info 资源时却报错了。调试进去看发现后台获取不到当前登陆的用户,查看请求头发现并没有把登陆时返回的cookies设置到第二次请求的头里面。

  查询资料才知道登陆请求的主数据项目与POS项目不属于同一个子域,即存在跨域,跨域请求想要带上cookies必须在请求头里面加上{crossDomain: true, xhrFields: {withCredentials: true}}设置,于是在index界面加上了如下代码:

        <script>$(function () {  //, headers: { 'x-requested-with': 'XMLHttpRequest' }$.ajaxSetup({crossDomain: true, xhrFields: {withCredentials: true}});});</script>

  然后在后台代码返回response时做如下处理:

private boolean recharge(HttpServletRequest request, HttpServletResponse response) throws Exception {String url = request.getHeader("Origin");logger.debug("Access-Control-Allow-Origin:" + url);if (!StringUtils.isEmpty(url)) {String val = response.getHeader("Access-Control-Allow-Origin");if (StringUtils.isEmpty(val)) {response.addHeader("Access-Control-Allow-Origin", url);response.addHeader("Access-Control-Allow-Credentials", "true");}}return true;}

  

再次访问,发现请求头已经可以携带cookies。

转载于:https://www.cnblogs.com/zhangcybb/p/6594991.html

跨域请求设置withCredentials相关推荐

  1. ajax 跨域 headers JavaScript ajax 跨域请求 +设置headers 实践

    解决跨域调用服务并设置headers 主要的解决方法需要通过服务器端设置响应头.正确响应options请求,正确设置 JavaScript端需要设置的headers信息 方能实现. 此处手札 供后人参 ...

  2. node 跨域请求设置

    http.createServer((req,res)=>{ //设置允许跨域的域名,代表允许任意域名跨域 res.setHeader("Access-Control-Allow-Or ...

  3. 搞定所有的跨域请求问题

    转载自  搞定所有的跨域请求问题 网上各种跨域教程,各种实践,各种问答,除了简单的 jsonp 以外,很多说 CORS 的都是行不通的,老是缺那么一两个关键的配置.本文只想解决问题,所有的代码经过亲自 ...

  4. 用iframe设置代理解决ajax跨域请求问题

    用iframe设置代理解决ajax跨域请求问题 参考文章: (1)用iframe设置代理解决ajax跨域请求问题 (2)https://www.cnblogs.com/ranzige/p/370965 ...

  5. yii2 跨域请求配置_伸手党系列四:vuecli3.0以上 使用 proxy 进行跨域设置

    跨域:出于浏览器的同源策略限制,当一个请求url的协议.域名.端口三者之间任意一个与当前页面url不同即为跨域. process:process 对象是一个全局变量,它提供有关当前 Node.js 进 ...

  6. ajxs跨域 php_php设置header头允许ajax跨域请求

    在做项目的时候,我们有时候希望能够可以跨域进行请求,但是ajax访问php接口的时候,通常会报一个错误: Failed to load 你的网址/test.php: No 'Access-Contro ...

  7. SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求

    SpringBoot2.1.5 (22)--- SpringBoot设置支持跨域请求 现代浏览器处于安全的考虑,在http/https请求时必须遵守同源策略,否则即使跨域的http/https 请求, ...

  8. Node.js设置CORS跨域请求中多域名白名单的方法

    允许跨域请求,主要就是配置Response响应头中的 Access-Control-Allow-Origin 属性为你允许该接口访问的域名. 最常见的设置是: res.header('Access-C ...

  9. php 设置跨域axios,vue2.0中proxyTable用axios进行跨域请求的设置方法

    vue2.0设置proxyTable使用axios进行跨域请求的方法 这里请求的是知乎日报的api,由@izzyleung这位大神提供的,这是github地址. 在vue-cli构建的项目中先安装ax ...

最新文章

  1. 卡尔曼滤波器的特殊案例
  2. 在IOS开发中根据(id)sender获取UIButton的信息
  3. 内置函数sorted的10个小tips
  4. 【bzoj2754】【scoi2012】喵星球上的点名
  5. 【转】智能音箱技术概览
  6. There is no public key available for the following key IDs: 3B4FE6ACC0B21F32
  7. linux可疑程序,linux可疑程序追踪
  8. leetcode 1438. 绝对差不超过限制的最长连续子数组(滑动窗口+treemap)
  9. Perl IDE之Perl Express和Eclipse+EPIC+PadWalker
  10. max unity 方向_在2D游戏中实现方向光照
  11. Flink SQL CDC 上线!我们总结了 13 条生产实践经验
  12. 面经——Linux使用
  13. 拓端tecdat|R语言泊松Poisson回归模型分析案例
  14. Python标准类型的分类
  15. 接水果(fruit)——整体二分+扫描线
  16. 21天学通C语言-学习笔记(7)
  17. PostgreSQL-客户端安装
  18. cadence 通孔焊盘_Allegro PCB -通孔焊盘制作 及Flash制作
  19. 硬盘上出现0KB文件无法删除解决
  20. HTCVIVE无线套装安装后unityvr项目无法在头盔中显示

热门文章

  1. 201421410040 张运焘 实验一
  2. Jekyll添加FancyBox 插件
  3. Laravel 手记(连接mysql)
  4. Unity3D学习笔记(二) 一些常用的空间函数
  5. (转)Git详解之一:Git起步
  6. linux进程--虚拟地址空间布局(十一)
  7. 3w最简单led灯电路图_led灯驱动电源电路图大全(六款模拟电路设计原理图详解)...
  8. SQL语言基本语句介绍
  9. Machine Learning-Introduction
  10. [验证码识别技术]-初级的滑动式验证图片识别