update 另一个问题

ajax在进行复杂请求如PUT,POST,DELETE等时,当请求为cross domain request是,会先发一个OPTIONS请求确认服务器的跨域支持情况,在发送原来的请求,所以对于服务器,需要对OPTIONS请求做一次xiang'yin

遇到的问题

对于前后端分离的应用,使用ajax跨域请求时,默认情况下是无法传输cookie的。具体的异常表现如下

客户端发送给服务器的请求中不包含cookie信息

服务器返回给客户端的响应中包含了Set Cookie 的信息,但是在浏览器的cookie中,没有记录词条cookie信息

解决方法

需要前后端都做一些小的改动

服务器端

以nodejs的后端为例,使用express框架,需要加上几行代码

app.all('*', function(req, res, next) {

res.header("Access-Control-Allow-Origin", config().allow_origin);

res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");

res.header("Access-Control-Allow-Methods", "PUT,POST,GET,DELETE,OPTIONS");

res.header("Access-Control-Allow-Credentials", "true");

res.header("X-Powered-By", ' 3.2.1')

res.header("Content-Type", "application/json;charset=utf-8");

next();

});

注意这句话:

res.header("Access-Control-Allow-Credentials", "true");

这句话用来允许跨域访问时带上cookie信息,此外有一个问题,就是当我们"Access-Control-Allow-Origin"设置为*的时候,上面这句话是无法使用的。所以不能够设置为*,否则无法使用cookie。

浏览器端

以jquery的ajax请求为例

$.ajax({

url,

type: 'get',

dataType: 'json',

// 允许跨域

crossDomain: true,

// 下面这句话允许跨域的cookie访问

xhrFields: {

withCredentials: true

},

success: (res) => {

console.log(res);

}

});

总结

这个问题就是这样解决的,建议只允许自己前端网站的域名进行跨域访问,防止CSRF之类的攻击。

ajax请求时cookie,ajax跨域请求中的cookie问题相关推荐

  1. ajax跨域请求 xml,XMLHttpRequest的跨域请求

    动态添加一个标签,而script标签的src属性是没有跨域的限制的.这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了. 这样其实"jQuery AJAX跨域问题& ...

  2. AJAX(XMLHttpRequest)进行跨域请求方法详解(三)

    意:以下代码请在Firefox 3.5.Chrome 3.0.Safari 4之后的版本中进行测试.IE8的实现方法与其他浏览不同. 3,带验证信息的请求 身份验证是Web开发中经常遇到的问题,在跨域 ...

  3. AJAX(XMLHttpRequest)进行跨域请求方法详解(二)

    注意:以下代码请在Firefox 3.5.Chrome 3.0.Safari 4之后的版本中进行测试.IE8的实现方法与其他浏览不同. 2,预检请求 预检请求首先需要向另外一个域名的资源发送一个 HT ...

  4. uniapp前端向后端发送请求时,出现跨域问题的解决方法与原理

    h5代理 打开h5页面的端口是8081,实际访问的后端端口是8021 修改方式: 在manifest里的源码模式中,添加如下代码: 调用接口的地方这样写: 原理: 直接访问8021端口时,显示跨域问题 ...

  5. java跨域请求,且附上前端跨域请求代码

    为了跟上新的潮流,学习前后端分离的概念及技术是必须的,跨域也随之而产生. 首先确定什么是前后端分离,它不仅是对代码的解耦,也是对开发人员的解耦,真正的前端是前端,后台是后台,开发速度至少快一倍. 即你 ...

  6. 前端跨域请求get_解决前端跨域请求的几种方式

    利用 JSONP 实现跨域调用 说道跨域调用,可能大家首先想到的或者听说过的就是 JSONP 了. 1.1 什么是JSONP JSONP 是 JSON 的一种使用模式,可以解决主流浏览器的跨域数据访问 ...

  7. bat怎么发起网络请求_因为一个跨域请求,我差点丢了饭碗

    浏览器基本原理 我叫小风,是Windows帝国一个普通的上班族.今天,我入职了一家浏览器公司,公司的主营业务是为人类提供Internet上网服务,我的岗位是负责执行JavaScript代码. 上午的晨 ...

  8. axios不发起请求_axios无法发起跨域请求

    具体情况看截图 我封装了一个ajax模块,源码如下 import axios from 'axios' import Qs from 'qs' export default { post: funct ...

  9. php vue 跨域请求数据6,Vue跨域请求问题解决方案过程解析

    查看页面响应信息,提示跨域有问题 #### 二.解决上面跨域问题:根目录写入以下vue.config.js // vue.config.js module.exports = { devServer: ...

  10. 跨域(什么样的请求方式才叫跨域请求?)

    首先跨域是浏览器安全限制的,不是服务器限制的. 协议不同算跨域,例如:http和https. 端口号不同算跨域,例如:80和8080. 域名不同算跨域,例如:baidu.com和jingdong.co ...

最新文章

  1. ubuntu16.04下Sublime Text3中文无法输入解决方法和创建桌面快捷方式
  2. operator conv_transpose1‘s input 1 is not linked
  3. 不用第三方库,也能用 Python 作图,效果还不错
  4. 【内核驱动】 Kconfig简介
  5. linux内核注释目录,linux内核完全注释目录
  6. .net 微服务实践
  7. 学过物理的人才能看懂的笑话,你能看明白几个?
  8. 【微信网页直接下载app】微信跳转-微信浏览器中直接唤起本地浏览器和App
  9. 作者:熊刚,男,博士,现任中国科学院自动化研究所研究员,中国科学院云计算中心自动化所东莞研究院首席科学家等职务。...
  10. deian   授权用户 sudo权限
  11. linux下安装redmine2.5.1详细步骤
  12. linux系统常用操作命令
  13. Tensorflow——Tensorboard可视化
  14. D3.js 入门系列1 - 简介和安装
  15. 【数学建模】算法模型(三)|模糊综合和灰色关联分析 元胞自动机模型 图论 BP神经网络算法 马尔可夫链蒙特卡罗算法(MCMC)
  16. BIOS的全局变量gST gBS gDS
  17. 前端学习--Bable的使用步骤
  18. JS节点操作——连缀
  19. 胡阳pyhton作业题--20150730
  20. 未来计算机代替人脑吗,计算机不可能替代人脑写作

热门文章

  1. 基于HTML+CSS制作静态页面【剪纸文化15页】传统文化设计题材 dreamweaver制作静态html网页设计作业作品
  2. linux查看磁盘io
  3. Chrome 浏览器全球大翻车?「满 100 减 90」 让 20 多亿用户无网可上!
  4. 苹果XS怎么截屏_沙市女子新买苹果XS手机疑似有问题 想退货不容易
  5. 2022-05-10 实现一个可拖拽的弹出登录框
  6. 《牛津字典精华总结》- 初阶系列 - 字母 - E
  7. 51单片机实例3——使用P3口依次点亮8位LED
  8. java-net-php-python-jspm图书管理系统计算机毕业设计程序
  9. RHCSA笔记 - 安装虚拟机、安装rhel系统、连接Xshell
  10. android排行,2018安卓手机排行榜 2018安卓手机性能排行榜