前言

以前一直以为当$.ajax()的 dataType设置为jsonp时,其method(请求方法)无论怎么设置,都会变成get,直到前两天遇到了一个坑。

下面来一起看看详细的介绍:

关于跨域请求与jsonp

  • 跨域:由于受到同源策略(协议、域名、端口三者必须全部相同)的影响,ajax请求会受到限制,要突破这种限制,跨域便产生了。跨域的解决方案有多种,这里不展开阐述,只是针对GET请求中的jsonp跨域解决方案做一下说明。
  • jsonp,本质上jsonp不是xhr异步请求,就是请求了一个js文件,因此在chrome的network面板中的xhr标签下看不到jsonp的跨域请求,在js标签下能看到。就是利用script标签中src不受同源策略的限制,前端定义了回调函数,请求的js脚本中获取数据,并执行前端的回调函数,因此前后端需要统一定义下回调函数名。
  • $.ajax中jsonp,$.ajax对jsonp进行了封装看起来像是ajax请求。由于jsonp是针对get请求的跨域解决,因此之前的经验告诉我,即使type设置了post,在jsonp的时候,也会自动转换成get,直到有一天踩了个坑。翻看$.ajax模块的源码发现,只有去手动设置crossDomain为true,或者实际上是跨域,才会设置为get。否则还是填入的type

结论:

手动设置crossDomain为true,或者真的是跨域,才会修改type为GET,否则还是传入的type参数

最新文章

  1. 简述抽象和封装,对你学习Java有一些作用
  2. 004-For与Function进阶实战、Lazy的使用
  3. 初学Node(一)国际惯例HelloWorld
  4. Win 10 连接公司VPN后不能上Internet外网
  5. python 闭包(closure)
  6. TCP/IP协议三次握手与四次握手流程解析(转载及总结)
  7. KVC 与 KVO 理解-b
  8. 关于"zoom“ 的一点小认识
  9. tab标签切换(无炫效果,简单的显示隐藏)
  10. Javascript中NaN、null和undefinded的区别
  11. winfrom窗体加载控制台程序,可以自定义输出语句颜色
  12. netty-socketio 概述
  13. Java高并发--缓存
  14. A1030. Travel Plan
  15. Chars模拟弱网测试
  16. 自定义UIPickView
  17. 2.STM32启动文件
  18. Maven学习 四 Eclipse与Maven结合的配置
  19. Java:多个文档合并输出到一个文档
  20. C#图片文字识别

热门文章

  1. Python_每日习题_0001_数字组合
  2. 20135323符运锦----LINUX第三次实践:程序破解
  3. <<浪潮之巅>>阅读笔记一
  4. Spring及Spring Boot 国内快速开发框架
  5. Java抓任意网页标题乱码jsoup解决方案一例
  6. PHP微信支付案例收录
  7. [转载]Linux目录说明
  8. PSexec以及xcopy的简单使用
  9. sql优化问题笔记(mysql)
  10. linux 十个命令