jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

jquery ajax 请求中多出现一次OPTIONS请求及其解决办法

http://www.tangshuang.net/2271.html

在上一篇《服务端php解决jquery ajax跨域请求restful api问题及实践》中,我简单介绍了如何通过服务端解决jquery ajax的跨域请求问题,但是,在这个过程中,我们会发现,在很多post,put,delete等请求之前,会有一次options请求。本文主要是来讨论一下这是什么原因引起的。

根本原因就是,W3C规范这样要求了!在跨域请求中,分为简单请求(get和部分post,post时content-type属于application/x-www-form-urlencoded,multipart/form-data,text/plain中的一种)和复杂请求。而复杂请求发出之前,就会出现一次options请求。

什么是options请求呢?它是一种探测性的请求,通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

在ajax中出现options请求,也是一种提前探测的情况,ajax跨域请求时,如果请求的是json,就属于复杂请求,因此需要提前发出一次options请求,用以检查请求是否是可靠安全的,如果options获得的回应是拒绝性质的,比如404\403\500等http状态,就会停止post、put等请求的发出。

虽然在下面的参考文献中有人提出可以取消options请求,但是实测后发现是不行的,jquery封装之后,更不能轻易取消。因此,靠javascript客户端取消options请求是不可能的,只能通过服务端对options请求做出正确的回应,这样才能保证options请求之后,post、put等请求可以被发出。但是,我们不能允许所有的options请求,而应该是有条件的,所以最好是通过一个特殊的机制,去验证客户端发出的options请求数据是否是符合服务端的条件的,如果不满足,返回403,则客户端会取消原有的post计划。

参考文献:

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113674.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • goland 激活2021【2021.10最新】

    (goland 激活2021)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
  • 永恒之蓝(MS17010)漏洞复现

    永恒之蓝(MS17010)漏洞复现文章目录介绍:准备开始复现正式开始利用介绍:永恒之蓝是指2017年4月14日晚,黑客团体ShadowBrokers(影子经纪人)公布一大批网络攻击工具,其中包含“永恒之蓝”工具,“永恒之蓝”利用Windows系统的SMB漏洞可以获取系统最高权限。恶意代码会扫描开放445文件共享端口的Windows机器,无需用户任何操作,只要开机上网,不法分子就能在电脑和服务器中植入勒索软件、远程控制木马、虚拟货币挖矿机等恶意程序准备1.kali的ip:192.168.0.1282.WindowsServer

    2022年5月3日
  • js对象动态增加属性_js对象添加数据

    js对象动态增加属性_js对象添加数据varobj={};for(vari=0;i<10;i++){eval("obj.p"+i+"="+i);}

    2022年10月28日
  • 关于学术论文投稿中的 Cover Letter「建议收藏」

    关于学术论文投稿中的 Cover Letter「建议收藏」  学术期刊报道原始研究工作的论文,一般分为需要快速发表的通信、快报类(communication,letter等)和报道系统研究工作的全文类(fullpaper,article)两种形式。投这两种文章,coverletter和论文Introduction的写法是不同的。    对于需要以通讯或快报形式快速发表的工作,可以是初步的研究结果(preliminaryresult),强调的是工…

    2022年5月22日
  • yui2 datatable转换至yui3 (2)「建议收藏」

    yui2 datatable转换至yui3 (2)「建议收藏」接下来是第一个高峰,就是把原来的ajax实现,用yui3的io来写。而datatable当前使用的是connection。这里是需要重写的部分。(除非贪图简便,直接引入connection)

    2022年7月16日
  • IDEA主题插件:Material Theme UI「建议收藏」

    IDEA主题插件:Material Theme UI「建议收藏」大致效果如下:IDEA官方下载MaterialThemeUI步骤:Settings->Plugins->搜索Translation(某些版本IDEA搜索插件有问题可到官网下载再安装本地插件)->安装->重启IDEA->首次根据提示进行UI相关配置->使用配置后的UI如需离线安装插件参考如下:如需修改配置项参考如下:注…

    2022年6月27日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号