错误:

1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true。

正确:

1.ajax同域请求下,ajax会自动带上同源的cookie;

2.ajax同域请求下,ajax添加自定义请求头(或原装)header,前端、后台不需要增加任何配置,

并且不会因为增加自定义请求头header,而引起预检查请求(options);

3.ajax跨域请求下,如果不需要携带cookie、请求头header,只需要在后台配置相应参数即可;

后台参数:

(1).Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;

4.ajax跨域请求下,ajax不会自动携带同源的cookie,需要通过前端配置相应参数才可以跨域携带同源cookie,后台配置相应参数才可以跨域返回同源cookie;

前端参数:

withCredentials: true(发送Ajax时,Request header中会带上Cookie信息)

后台参数:

(1).Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;

特别说明:配置了Access-Control-Allow-Credentials:true则不能把Access-Control-Allow-Origin设置为通配符*;

(2).Access-Control-Allow-Credentials:响应头表示是否可以将对请求的响应暴露给页面(cookie)。返回true则可以,其他值均不可以。

5.ajax请求任何时候都不会带上不同源的cookie(Cookie遵循同源策略);

6.ajax跨域请求下,ajax添加自定义或者原装的请求头,请求会发送两次,第一次预检查请求,第二次正常请求,详细描述:

post(或GET)跨域请求时,分为简单请求和复杂请求,跨域携带自定义或者原装请求头头时是复杂请求。

复杂请求会先发送一个method 为option的请求,目的是试探服务器是否接受发起的请求. 如果服务器说可以,再进行post(或GET)请求。

对于java后台web应用,跨域需要添加一个过滤器(过滤器详见下面案例代码),这个过滤器做的事就是,加了几个http header在返回中,

Access-Control-Allow-Origin 我能接受的跨域请求来源,配置主机名

Access-Control-Allow-Headers 表示能接受的http头部,别忘了加入你自己发明创造的头部

Access-Control-Allow-Methods 表示能接受的http mothed ,反正就那几种,全写上也无妨,猥琐点就只写 post, options

如果是OPTION返回空,设置返回码为202,202表示通过。

需要前端配置相应参数才可以跨域携带请求头,后台配置相应参数进行跨域携带请求头;

前端参数:

crossDomain:true(发送Ajax时,Request header 中会包含跨域的额外信息,但不会含cookie(作用不明,不会影响请求头的携带))

后台参数(配置预检查过滤器):

(1)Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;

(2)Access-Control-Allow-Credentials:响应头表示是否可以将对请求的响应暴露给页面(cookie)。返回true则可以,其他值均不可以;

(3)Access-Control-Allow-Headers:用于预检请求中,列出了将会在正式请求的 Access-Control-Request-Headers 字段中出现的首部信息。(自定义请求头);

(4)Access-Control-Allow-Methods:在对预检请求的应答中明确了客户端所要访问的资源允许使用的方法或方法列表;

亲测小结论:

1.ajax跨域请求下,后台不配置跨域Access-Control-Allow-Origin,同样能够执行后台方法,但是无法执行ajax的success的方法,控制台报跨域错误;

2.ajax跨域请求下,前端配置withCredentials: false,同样能够执行后台方法,但是无法携带同源cookie,后台无法获取;

3.ajax跨域请求下,前端配置withCredentials: true,后端没有配置Access-Control-Allow-Credentials:true,同样能够执行后台方法,并能够生成cookie并返回浏览器,但是无法执行ajax的success的方法,控制台报跨域错误;

4.ajax跨域请求下,前端配置withCredentials: false或不配置withCredentials,后端配置Access-Control-Allow-Credentials:true或者false,同样能够执行后台方法,并能够生成cookie并返回浏览器,但是无法携带同源cookie,能够执行ajax的success的方法;

5.Cookie携带只区分域名,不区分端口;

6.jsonp可以携带cookie,但只能携带所属域名的cookie(同源策略);

7.jsonp可以跨域生成cookie,流程如下:跨域请求之后,在服务器端生成cookie,并在浏览器端记录相应的cookie;

8.静态资源同样会携带cookie(js和图片等),但是如果是和当前页面不同域只是在network中不显示cookie选项,但是后台能够获取到对应cookie;

9.ajax同域请求会自动带上同源的cookie,不会带上不同源的cookie;

10.这是MDN对withCredentials的解释: MDN-withCredentials ,我接着解释一下同源。

众所周知,ajax请求是有同源策略的,虽然可以应用CORS等手段来实现跨域,但是这并不是说这样就是“同源”了。ajax在请求时就会因为这个同源的问题而决定是否带上cookie,这样解释应该没有问题了吧,还不知道同源策略的,应该去谷歌一下看看。

总结:最好前端后台配置跨域,则同时配置相应的跨域配置,否则总会出现不可控的错误;

转:https://blog.csdn.net/menghuanzhiming/article/details/102736312

错误:1.ajax请求时是不会自动带上cookie的,要是想让他带上的话,必须设置withCredential为true。

正确:1.ajax同域请求下,ajax会自动带上同源的cookie;

2.ajax同域请求下,ajax添加自定义请求头(或原装)header,前端、后台不需要增加任何配置,并且不会因为增加自定义请求头header,而引起预检查请求(options);

3.ajax跨域请求下,如果不需要携带cookie、请求头header,只需要在后台配置相应参数即可;后台参数:(1).Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;

4.ajax跨域请求下,ajax不会自动携带同源的cookie,需要通过前端配置相应参数才可以跨域携带同源cookie,后台配置相应参数才可以跨域返回同源cookie;前端参数:withCredentials: true(发送Ajax时,Request header中会带上Cookie信息)后台参数:(1).Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;特别说明:配置了Access-Control-Allow-Credentials:true则不能把Access-Control-Allow-Origin设置为通配符*;(2).Access-Control-Allow-Credentials:响应头表示是否可以将对请求的响应暴露给页面(cookie)。返回true则可以,其他值均不可以。5.ajax请求任何时候都不会带上不同源的cookie(Cookie遵循同源策略);

6.ajax跨域请求下,ajax添加自定义或者原装的请求头,请求会发送两次,第一次预检查请求,第二次正常请求,详细描述:post(或GET)跨域请求时,分为简单请求和复杂请求,跨域携带自定义或者原装请求头头时是复杂请求。复杂请求会先发送一个method 为option的请求,目的是试探服务器是否接受发起的请求. 如果服务器说可以,再进行post(或GET)请求。对于java后台web应用,跨域需要添加一个过滤器(过滤器详见下面案例代码),这个过滤器做的事就是,加了几个http header在返回中,Access-Control-Allow-Origin 我能接受的跨域请求来源,配置主机名Access-Control-Allow-Headers 表示能接受的http头部,别忘了加入你自己发明创造的头部Access-Control-Allow-Methods 表示能接受的http mothed ,反正就那几种,全写上也无妨,猥琐点就只写 post, options如果是OPTION返回空,设置返回码为202,202表示通过。需要前端配置相应参数才可以跨域携带请求头,后台配置相应参数进行跨域携带请求头;前端参数:crossDomain:true(发送Ajax时,Request header 中会包含跨域的额外信息,但不会含cookie(作用不明,不会影响请求头的携带))后台参数(配置预检查过滤器):(1)Access-Control-Allow-Origin:设置允许跨域的配置, 响应头指定了该响应的资源是否被允许与给定的origin共享;(2)Access-Control-Allow-Credentials:响应头表示是否可以将对请求的响应暴露给页面(cookie)。返回true则可以,其他值均不可以;(3)Access-Control-Allow-Headers:用于预检请求中,列出了将会在正式请求的 Access-Control-Request-Headers 字段中出现的首部信息。(自定义请求头);(4)Access-Control-Allow-Methods:在对预检请求的应答中明确了客户端所要访问的资源允许使用的方法或方法列表;

亲测小结论:1.ajax跨域请求下,后台不配置跨域Access-Control-Allow-Origin,同样能够执行后台方法,但是无法执行ajax的success的方法,控制台报跨域错误;2.ajax跨域请求下,前端配置withCredentials: false,同样能够执行后台方法,但是无法携带同源cookie,后台无法获取;3.ajax跨域请求下,前端配置withCredentials: true,后端没有配置Access-Control-Allow-Credentials:true,同样能够执行后台方法,并能够生成cookie并返回浏览器,但是无法执行ajax的success的方法,控制台报跨域错误;4.ajax跨域请求下,前端配置withCredentials: false或不配置withCredentials,后端配置Access-Control-Allow-Credentials:true或者false,同样能够执行后台方法,并能够生成cookie并返回浏览器,但是无法携带同源cookie,能够执行ajax的success的方法;5.Cookie携带只区分域名,不区分端口;6.jsonp可以携带cookie,但只能携带所属域名的cookie(同源策略);7.jsonp可以跨域生成cookie,流程如下:跨域请求之后,在服务器端生成cookie,并在浏览器端记录相应的cookie;8.静态资源同样会携带cookie(js和图片等),但是如果是和当前页面不同域只是在network中不显示cookie选项,但是后台能够获取到对应cookie;9.ajax同域请求会自动带上同源的cookie,不会带上不同源的cookie;10.这是MDN对withCredentials的解释: MDN-withCredentials ,我接着解释一下同源。众所周知,ajax请求是有同源策略的,虽然可以应用CORS等手段来实现跨域,但是这并不是说这样就是“同源”了。ajax在请求时就会因为这个同源的问题而决定是否带上cookie,这样解释应该没有问题了吧,还不知道同源策略的,应该去谷歌一下看看。

总结:最好前端后台配置跨域,则同时配置相应的跨域配置,否则总会出现不可控的错误;

前端cookie 放到请求头_ajax请求携带cookie和自定义请求头header(跨域和同域)相关推荐

  1. 实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie

    实现uniapp的app和小程序开发中能使用axios进行跨域网络请求,并支持携带cookie 1-使用npm install axios;命令安装axios 2-新建一个文件夹再建一个.js后缀文件 ...

  2. spring boot 跨域请求_SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition...

    191222-SpringBoot 系列教程 web 篇之自定义请求匹配条件 RequestCondition 在 spring mvc 中,我们知道用户发起的请求可以通过 url 匹配到我们通过@R ...

  3. 携带cookie进行数据请求

    前端进行数据请求有:普通的ajax(json)请求,jsop跨域请求,cors跨域请求,fetch请求...PC端这些请求方式中,普通的ajax(json)请求和jsop跨域请求是默认携带cookie ...

  4. php设置请求头部,php curl如何设置自定义请求头

    php curl设置头的方法:首先设置自定义请求头:然后设置"curl_setopt($ch, CURLINFO_HEADER_OUT, );":最后执行"curl_ge ...

  5. ajax中设置请求头和自定义请求头

    回到文章总目录 1.创建在testfour文件夹并在这个文件夹里面 2.创建post.html文件 3.创建server.js文件 本篇文章使用了鼠标移动至方框则自动发送请求至服务端 通常设置请求头 ...

  6. 03-requests模块携带UA请求头,携带参数,携带cookie,持久化存储

    reques模块的基础使用方法 chrome浏览器使用方法了解新建隐身窗口的目的,了解chrome中network的使用 1,新建隐身窗口(无痕窗口) 浏览器中直接打开网站,会自动带上之前网站保存的c ...

  7. 详细记录如何在跨域请求中携带cookie

    1. 搭建环境 1.生成工程文件 npm init 2.安装 express npm i express --save 3.新增app1.js,开启服务器1 端口:3001 const express ...

  8. axios库读不到cookie_axios请求无法携带cookie

    背景 最近在用vue重构公司公司AngularJS 1.X项目,老项目身份认证采用的cookie,前端ajax库采用是angularJS的$http/$resource服务,新版采用的是axios,但 ...

  9. vue前后端分离项目http请求携带cookie设置,java过滤器filter设置允许跨域

    最近使用VUE开发前后端分离,登录后,后端存入用户信息到session,前端http axios异步请求获取不到sesion,查看http请求头发现http headers未携带cookie, 然后查 ...

最新文章

  1. Netty系列之Netty 服务端创建
  2. java序列化算法透析_Java序列化机制与原理的深入分析
  3. python累积和_python – 如何维持累积总和?
  4. Android Studio 多渠道打包、自动版本号及 gradlew 命令的基本使用
  5. 优酷电视剧爬虫代码实现一:下载解析视频网站页面(3)补充知识点:htmlcleaner使用案例...
  6. 【C语言简单说】二:第一个C语言程序详解(2)
  7. linux查看命令的帮助文档,Linux查看命令和帮助文件位置
  8. php 启动管理工具下载,PHP管理工具compser windows下安装
  9. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
  10. linux 内核协议栈 ip_rcv_finish,Linux内核协议栈学习笔记(二)--netfilter框架
  11. PyTorch学习—17.正则化之weight_decay与dropout
  12. 通信工程师考试新手报考指南
  13. 【无人机学习】无人机基础知识
  14. Jupyter notebook 打开网页无法显示
  15. 苏宁数据中台架构实践
  16. weui 自定义datepicker 年月日 上午下午 四级联动的实现
  17. 学生用计算机exp,科学计算器EXP
  18. ffmpeg 提取 视频,音频,字幕 方法
  19. Spark 安装配置及下载地址
  20. 伺服电机选型计算pdf_机器设计中伺服电机及驱动器的选型(PDF),文末附下载地址...

热门文章

  1. linux主设备编号从0到多少,Linux驱动开发之主设备号找驱动,次设备号找设备
  2. mysql对哪些字符敏感_MySQL对大小写敏感一些总结
  3. mysql的模糊查询在xml_数据库模糊查询语句(mybatis中运用(xml文件))
  4. java怎么制作放置游戏_从零开始实现放置游戏(八)——实现后台管理系统(6)代码重构...
  5. ipad如何连接电脑_指纹打卡机如何连接电脑?怎么导出原始考勤数据记录?
  6. MongoDB下载地址
  7. Appium定位元素的几种方法总结
  8. c语言boolean作为全局变量_最容易忽略的C语言知识点细节,编程大牛进阶之路!...
  9. 怎样格式化电脑_160G移动硬盘做PE启动盘 要怎样做
  10. 用计算机制作演示文稿教案博客,制作演示文稿 教学反思