文章目录

  • Ajax请求限制
  • Ajax请求过程
  • JSONP代码优化

Ajax请求限制

Ajax只能向自己的服务器发送请求

  1. 同源:如果两个页面拥有相同的协议,端口和域名,那么这两个页面就属于同一个源,其中只要一个不相同,就是不同源
  2. 同源政策的目的:为了保证用户信息的安全,防止恶意的网站窃取数据,最初的同源政策是指A网站在客户端设置的Cookie,B网站是不能访问的
  3. 使用JSONP解决同源限制问题(它不属于Ajax请求,但他可以模拟Ajax请求)

Ajax请求过程

  1. 将不同源的服务器端请求地址写在script标签的src属性中
  2. 服务器端相应数据必须是一个函数的调用,真正要发送给客户端的数据需要作为函数调用的参数
  3. 在客户端全局作用域下定义函数fn
  4. 在fn函数内部对服务器端返回的数据进行处理

JSONP代码优化

  1. 客户端需要将函数名称传递到服务器
  2. 将script请求的发送变成动态请求
 <button class="btn">点我发送请求</button><!-- <script></script> --><!-- 将非同源服务器端的请求地址写在script标签中 --><!-- <script src="http://localhost:3000/test"></script> --><script>var btn = document.querySelector('.btn');btn.onclick = function(){jsonp({url:'http://localhost:3000/test',data:{name:'lisi',age:20},success:function(data){console.log(123);console.log(data);}})}function jsonp(options){// 动态创建script标签var script = document.createElement('script');var params = '';for(var attr in options.data){params += '&' + attr +'='+options.data[attr];}var fnName = 'myjsonp' + Math.random().toString().replace('.','');// 变成全局函数window[fnName]=options.success;// 设置scr属性script.src = options.url + '?callback=' + fnName + params;// 将script标签追加到页面中document.body.appendChild(script);// 为script添加onload事件script.onload = function(){// 在body内部删除script标签document.body.removeChild(script);}}</script>

使用JSONP解决同源限制问题相关推荐

  1. Django 【第十九篇】JS实现的ajax、同源策略和前端JSONP解决跨域问题

    一.回顾jQuery实现的ajax 首先说一下ajax的优缺点 优点:AJAX使用Javascript技术向服务器发送异步请求: AJAX无须刷新整个页面: 因为服务器响应内容不再是整个页面,而是页面 ...

  2. php json -gt;访问,【转】Php+ajax+jsonp解决ajax跨域问题

    首先:jsonp是json用来跨域的一个东西. 原理是通过script标签的跨域特性来绕过同源策略. 发送端: $.ajax({ type : "post", url : &quo ...

  3. PHP的介绍及应用,ajax的介绍及应用,跨域问题及jsonp解决方法

    PHP(服务器编程语言) 服务器由环境(Apache),数据库(mysql),代码(HTML+css +js,php)组成. PHP必须在服务器的环境下执行 php与js最大的区别就是工作环境,PHP ...

  4. jsonp解决跨域问题(简单易懂)

    在日常的项目开发中,前端和后台是要经常交互的,有时候前端去请求后端的接口时,会出现跨域这个问题,解决跨域的方法有很多,本文主要讲解下如何使用jsonp来解决跨域问题. 解决问题之前,我们首先要明白一个 ...

  5. jsonp跨域的缺点ajax缺点,浅析JSONP解决Ajax跨域访问问题的思路详解

    前几天,工作上有一新需求,需要前端web页面异步调用后台的Webservice方法返回信息.实现方法有多种,本例采用jQuery+Ajax,完成后,在本地调试了一切ok,但是部署到服务器上以后就出现问 ...

  6. 如何真正理解用Nginx代理来解决同源策略

    经过对同源策略的了解,我们应该要消除对浏览器的误解,同源策略是浏览器做的一件好事,是用来防御来自邪门歪道的攻击,但总不能为了不让坏人进门而把全部人都拒之门外吧.没错,我们这种正人君子只要打开方式正确, ...

  7. jsonp解决ajax跨域问题,用JSONP解决ajax跨域问题

    JSONP:JSON With Padding 要点: 1.script标签 2.用script标签加载资源是没有跨域问题的 概要: 在资源加载进来之前先定义一个函数,这个函数接受一个参数(数据),函 ...

  8. 用jsonp 解决跨域问题

    用jsonp 解决跨域问题 参考文章: (1)用jsonp 解决跨域问题 (2)https://www.cnblogs.com/jiaoshuai/p/6844993.html 备忘一下.

  9. jQuery ajax 结合vue 获取豆瓣api 数据 ,jsonp解决跨域

    jQuery ajax 结合vue 获取豆瓣api 数据 ,jsonp解决跨域 <!DOCTYPE html> <html><head><meta chars ...

最新文章

  1. 以太网、局域网、互联网区别
  2. PHP中常用的正则表达式函数
  3. linux 网卡 开启dhcp,Linux DHCP如何绑定指定的网卡???
  4. 如何移植.NET Framework项目至.NET Core?
  5. 作者:​张群(1988-),女,博士,中国电子技术标准化研究院设备与数据研究室副主任。...
  6. 医保费用监控指标体系建立(九)其他专项分析
  7. sql 占比计算_数据库索引的优化及SQL处理过程(建议收藏)
  8. Hadoop2.x介绍与源代码编译
  9. 如何在 Mac 中更改文件夹图标,换上喜欢的图像 Icon?
  10. AndroidStudio关联GitHub
  11. 怎么卸载apowerrec_怎么禁用或卸载自带应用
  12. C,java,Python,这些名字背后的江湖!
  13. 2022 开源之夏 | Serverless Devs 陪你“变得更强”
  14. Tkinter 学习笔记
  15. 学习笔记---ih5_九宫格_拼图
  16. 【调剂】福建师范大学海峡创新实验室覃弦接收调剂研究生
  17. 【信号与系统学习笔记】—— 【周期信号的傅里叶级数表示】之 周期信号傅里叶级数的性质解读
  18. 列表中的元素进行统计数量
  19. 线上java程序CPU占用过高问题排查
  20. git修改已提交的信息

热门文章

  1. Android.mk中call all-subdir-makefiles和call all-makefiles-under,$(LOCAL_PATH)的区别
  2. VMware之虚拟机迁移
  3. 视频编解码(十八):编解码linux测试步骤
  4. 电脑自建服务器tomcat,怎么配置搭建tomcat服务器
  5. mysql报错:Host‘IP地址‘ isblocked because of many connection errors;unblock with ‘mysqladmin flush-hosts‘
  6. windows系统bat批处理 windows 关机,重启,锁定,休眠,注销
  7. lisp语言cond和if套用_AutoCAD LISP 循环选择语句cond
  8. html 显示接口数据格式化,科技常识:html格式化输出JSON示例(测试接口)
  9. selinux= 为 disabled_微课 | 状态管理 SELinux(2)
  10. html5历史纪录管理,HTML 5 新增方法以及历史管理