美文网首页
Angular 中$.ajax请求两次

Angular 中$.ajax请求两次

作者: 一长亭 | 来源:发表于2017-03-05 19:08 被阅读0次

问题描述:
在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仅被调用了一次。也就是第一次请求是为了第二次请求做准备。

相关文章

网友评论

      本文标题:Angular 中$.ajax请求两次

      本文链接:https://www.haomeiwen.com/subject/ogyegttx.html