Angular 中$.ajax请求两次

问题描述:
在angularjs中,使用$.ajax向服务器请求资源时,在Chrome调试面板中,Network里有两次看似相同的网络请求。

image.png

在请求时,前者与后者的时间差距在500毫秒以内。

查阅网上资料:

  • 1.是submit和button的默认事件导致重复提交,加个preventDefault()或者unbind('click)
  • 2.angular路由里声明了controller,然后在html里又用了ng-controller,导致的。

然而,我这里并不是,几经查找发现一个关键词preflight

原来,在请求中分为简单请求和复杂请求两种。具体区别,参见文档:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS

preflight的作用是:不同于简单请求,“预请求”要求必须先发送一个 [OPTIONS]方法请求给目的站点,来查明这个跨站请求对于目的站点是不是安全的可接受的。这样做,是因为跨站请求可能会对目的站点的数据产生影响。

明白原理后,发现第一次请求服务器没有实质数据返回,第二次请求返回了具体数据。并且,服务器端API仅被调用了一次。也就是第一次请求是为了第二次请求做准备。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,845评论 18 139
  • iOS网络架构讨论梳理整理中。。。 其实如果没有APIManager这一层是没法使用delegate的,毕竟多个单...
    yhtang阅读 5,237评论 1 23
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 11,096评论 6 13
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,196评论 4 61
  • 文/ 白画端 (1) 盛夏不再,秋意渐凉,白日也短了,夜长了。 已是深夜,明珠辗转反侧,因了脖子僵硬酸痛,这日又失...
    白画端阅读 6,847评论 77 134