文档章节

AJAX中出现两次请求,OPTIONS请求和GET请求

Jack088
 Jack088
发布于 2018/06/29 14:52
字数 465
阅读 127
收藏 0

在项目中发现ajax中出现两次请求,OPTIONS请求和GET请求,得到的数据出错,所以想要去掉OPTIONS请求。

ajax请求如下:

  1. ajaxRequestGet: function (lastPath, requestParams, successFun) {

  2. $.ajax({

  3. headers: {

  4. 'GISTTOKEN': getToken()

  5. },

  6. url : this.baseUrl+lastPath,

  7. type : "get",

  8. data: requestParams,

  9. success : function(data){

  10. successFun(data);

  11. }

  12. });

  13. },

查看到浏览器NetWork有两次请求,请求url一样:

查找原因是浏览器对简单跨域请求和复杂跨域请求的处理区别。

XMLHttpRequest会遵守同源策略(same-origin policy). 也即脚本只能访问相同协议/相同主机名/相同端口的资源, 如果要突破这个限制, 那就是所谓的跨域, 此时需要遵守CORS(Cross-Origin Resource Sharing)机制。

那么, 允许跨域, 不就是服务端设置Access-Control-Allow-Origin: *就可以了吗? 普通的请求才是这样子的, 除此之外, 还一种叫请求叫preflighted request。

preflighted request在发送真正的请求前, 会先发送一个方法为OPTIONS的预请求(preflight request), 用于试探服务端是否能接受真正的请求,如果options获得的回应是拒绝性质的,比如404\403\500等http状态,就会停止post、put等请求的发出。

那么, 什么情况下请求会变成preflighted request呢? 

1、请求方法不是GET/HEAD/POST
2、POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data, 或text/plain
3、请求设置了自定义的header字段

上面请求中设置了自定义的headers字段,出现了option请求。把自定义headers字段删掉后,只剩下get请求:

  1. ajaxRequestGet: function (lastPath, requestParams, successFun) {

  2. $.ajax({

  3. url : this.baseUrl+lastPath,

  4. type : "get",

  5. data: requestParams,

  6. success : function(data){

  7. successFun(data);

  8. }

  9. });

  10. },

本文转载自:https://blog.csdn.net/cc1314_/article/details/78272329

Jack088
粉丝 45
博文 560
码字总数 90026
作品 0
扬州
程序员
私信 提问
.Net Core Cors中间件解析

同源策略和资源跨域共享  1、同源策略    同源策略,它是由Netscape提出的一个著名的安全策略。现在所有支持JavaScript 的浏览器都会使用这个策略。所谓同源是指,域名,协议,端口相同。...

MicroHeart!
2018/07/13
0
0
求大神帮忙爬一个网站,新人已憔悴!

http://databank.worldbank.org/data/reports.aspx?source=world-development-indicators 世界银行的网站 要求模拟选择左边的国家 指标 时间三个参数 扒右边生成的信息。。我开始想直接模拟发...

猛虎蔷薇
2016/05/13
82
0
处理跨域:手动实现CORS和JSONP流程

准备 首先明白一件事: 跨域是浏览器的限制 也就是说不是你真的不能访问,而是浏览器出于他自己的种种担心拦截了你的访问。 至于浏览器在担心什么(什么是跨域,为什么会有跨域),参考:百度...

无用书生
09/01
0
0
ajax跨域,这应该是最全的解决方案了

前言 搬运的历史文章 从刚接触前端开发起,这个词就一直以很高的频率在身边重复出现,一直到现在,已经调试过N个跨域相关的问题了,16年时也整理过一篇相关文章,但是感觉还是差了点什么,于...

dailc
02/18
0
0
.NET Core API CORS

最近参与一个前后端分离的项目,后端基于 .NET Core 2.1 开发,在进行前后端对接的过程中,被跨域问题折腾得有点脾气了,这里把经验和大家分享一下。 GET/POST 请求 在服务端不做任何调整的情...

BeckJin
2018/08/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

JAVA数据结构与算法(二)

栈 1) 栈的英文为 (stack) 2) 栈是一 个 先入后出 (FILO-First In Last Out) 的有序列表 。 3) 栈 (stack) 是限制线性表中元素的插入和删除 只能在线性表的同一端 进行的一种特殊线性表。允许...

aaa阿伟呀
18分钟前
2
0
聊聊nacos的ServiceReporter

序 本文主要研究一下nacos的ServiceReporter ServiceManager.init nacos-1.1.3/naming/src/main/java/com/alibaba/nacos/naming/core/ServiceManager.java @Component@DependsOn("nacosAppl......

go4it
23分钟前
2
0
文字太长想隐藏的字用省略号来代替

white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 是必须的,因为宽度需要固定它才知道那些文字是超出了范围 你会觉得这样的话那怎么看全部的文字呢?你可以在元素上...

前端老手
29分钟前
3
0
二叉树交换左右子树

树的实现类 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) {val = x;}public TreeNode(int val, TreeN......

jxlgzwh
44分钟前
11
0
在Workstation 15上测试vShere 6.7+vCenter Server

想学习vSphere,最好能在自己的电脑上搭建相应的学习环境,如下图所示: _________________________________ | ...

大别阿郎
46分钟前
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部