ajax跨域问题(四)

栏目: jQuery · 发布时间: 6年前

内容简介:在响应头增加字段,告诉浏览器我允许对方跨域调用。所以我们可以在filter上增加相应头浏览器在发出请求的时候会先判断请求是简单请求还是非简单请求。如果是简单请求它就会先执行后判断,如果是非简单请求他就会先发一个预检命令,检查通过之后他才会把跨域请求发出去。我们可以通过对比普通请求和跨域请求请求头里面的区别,对比之后发现跨域请求的请求头里面多了一个orgin字段。这个字段的值是当前域名的信息。浏览器发现这个请求是跨域请求的时候,它就会在请求头里面增加一个当前域的信息的字段。然后等请求返回回来的时候,他就会检查

被调用方-Filter解决方案

在响应头增加字段,告诉浏览器我允许对方跨域调用。所以我们可以在filter上增加相应头

浏览器是先执行还是先判断?

浏览器在发出请求的时候会先判断请求是简单请求还是非简单请求。如果是简单请求它就会先执行后判断,如果是非简单请求他就会先发一个预检命令,检查通过之后他才会把跨域请求发出去。

浏览器如何判断?

我们可以通过对比普通请求和跨域请求请求头里面的区别,对比之后发现跨域请求的请求头里面多了一个orgin字段。这个字段的值是当前域名的信息。浏览器发现这个请求是跨域请求的时候,它就会在请求头里面增加一个当前域的信息的字段。然后等请求返回回来的时候,他就会检查下响应头里面有没有允许跨域的信息如果没有他就会报错。

filter代码实现

ajax跨域问题(四)

简单请求和非简单请求:

1、简单请求:

方法为GET、HEAD、POST的请求,并且请求头(header)里面没有自定义头;Content-Type为text/plain、multipart/form-data、application/x-www-form-urlencoded。

2、非简单请求:

方法为PUT、DELETE的请求,发送JSON格式的ajax请求、带自定义请求头的ajax请求。

例子:发送JSON格式的ajax请求

ajax跨域问题(四)

Access-Control-Allow-Headers是什么?有什么作用?

响应头部 Access-Control-Allow-Headers 用于 preflight request (预检请求)中,列出了将会在正式请求的 Access-Control-Expose-Headers 字段中出现的首部信息。简单首部,如 simple headers、Accept、Accept-Language、Content-Language、Content-Type (只限于解析后的值为 application/x-www-form-urlencoded、multipart/form-data 或 text/plain 三种MIME类型(不包括参数)),它们始终是被支持的,不需要在这个首部特意列出。

Access-Control-Max-Age是什么?

浏览器的同源策略,就是出于安全考虑,浏览器会限制从脚本发起的跨域HTTP请求(比如异步请求GET, POST, PUT, DELETE, OPTIONS等等),所以浏览器会向所请求的服务器发起两次请求,第一次是浏览器使用OPTIONS方法发起一个预检请求,第二次才是真正的异步请求,第一次的预检请求获知服务器是否允许该跨域请求:如果允许,才发起第二次真实的请求;如果不允许,则拦截第二次请求。Access-Control-Max-Age用来指定本次预检请求的有效期,单位为秒,,在此期间不用发出另一条预检请求。

例如:res.addHeader("Access-Control-Max-Age", "3600"),表示隔60分钟才发起预检请求


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

学习Web设计

学习Web设计

罗宾斯 / 靳志伟 / 机械工业出版社 / 2009-1 / 65.00元

《学习Web设计(第3版)》从说明网站和网页是如何工作开始,逐步深入。当你看完《学习Web设计(第3版)》时,你将掌握使用优化的图像文件来创建多列CSS布局的技术,而且你将知道如何创建网页。这一版经过了彻底的修订,它可以教你如何根据现代设计的实践经验和专业标准来创建网站。《学习Web设计(第3版)》包含了一些练习,可以帮助你学习各种技术,还有一些小测验可以确保你及时掌握重要的概念。如果你对网站设计......一起来看看 《学习Web设计》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

MD5 加密
MD5 加密

MD5 加密工具