当前位置: 首页 > wzjs >正文

网站数据库访问企业管理系统设计

网站数据库访问,企业管理系统设计,广东住房和城乡建设厅官方网站,网站信息内容建设实施办法目录 1. 了解同源策略和跨域 1.1 同源策略 1.1.1 什么是同源 1.1.2 什么是同源策略 1.2 跨域 1.2.1 什么是跨域 1.2.2 浏览器对跨域请求的拦截 1.2.3 如何实现跨域数据请求 2. JSONP 2.1 什么是JSONP 2.2 JSONP的实现原理 2.3 自己实现一个简单的JSONP 2.4 JSONP的…

目录

1. 了解同源策略和跨域

1.1 同源策略

1.1.1 什么是同源

1.1.2 什么是同源策略

1.2 跨域

1.2.1 什么是跨域

1.2.2 浏览器对跨域请求的拦截

1.2.3 如何实现跨域数据请求

2. JSONP

2.1 什么是JSONP

2.2 JSONP的实现原理

2.3 自己实现一个简单的JSONP

2.4 JSONP的缺点

2.5 jQuery中的JSONP

2.6 自定义参数及回调函数名称

2.7 jQuery中JSONP的实现过程


1. 了解同源策略和跨域

1.1 同源策略

1.1.1 什么是同源

如果两个页面的协议域名端口都相同,则两个页面具有相同的源

例如,下表给出了相对于 http://www.test.com/index.html 页面的同源检测:

1.1.2 什么是同源策略

同源策略(英文全称 Same origin policy)是浏览器提供的一个安全功能。

MDN 官方给定的概念:

  • 同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的重要安全机制。

通俗的理解:

  • 浏览器规定,A 网站的 JavaScript,不允许和非同源的网站 C 之间,进行资源的交互,例如:
    • 无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB
    • 无法接触非同源网页的 DOM
    • 无法向非同源地址发送 Ajax 请求

1.2 跨域

1.2.1 什么是跨域

同源指的是两个 URL 的协议、域名、端口一致,反之,则是跨域

出现跨域的根本原因:

  • 浏览器的同源策略不允许非同源的 URL 之间进行资源的交互。

网页:

  • http://www.test.com/index.html

接口:

  • http://www.api.com/userlist

1.2.2 浏览器对跨域请求的拦截

注意:

  • 浏览器允许发起跨域请求,但是,跨域请求回来的数据,会被浏览器拦截,无法被页面获取到!

1.2.3 如何实现跨域数据请求

现如今,实现跨域数据请求,最主要的两种解决方案,分别是 JSONPCORS

JSONP:

  • 出现的早,兼容性好(兼容低版本IE)。是前端程序员为了解决跨域问题,被迫想出来的一种临时解决方案。缺点是只支持 GET 请求,不支持 POST 请求。

CORS:

  • 出现的较晚,它是 W3C 标准,属于跨域 Ajax 请求的根本解决方案。支持 GET 和 POST 请求。缺点是不兼容某些低版本的浏览器。

2. JSONP

2.1 什么是JSONP

JSONP (JSON with Padding) 是 JSON 的一种“使用模式”,可用于解决主流浏览器的跨域数据访问的问题。

2.2 JSONP的实现原理

由于浏览器同源策略的限制,网页中无法通过 Ajax 请求非同源的接口数据。但是 <script> 标签不受浏览器同源策略的影响,可以通过 src 属性,请求非同源的 js 脚本。

因此,JSONP 的实现原理,就是通过 <script> 标签的 src 属性,请求跨域的数据接口,并通过函数调用的形式,接收跨域接口响应回来的数据。

剖析 jsonp实现原理1:

  • 在同一个页面中定义多个 script 标签,代码是共享的。
<script>function success(data) {console.log('拿到了data 数据:')console.log(data)}
</script><script>success({ name: 'zs', age: 20 })
</script>

剖析 jsonp实现原理2:

  • 新建一个 getData.js 的脚本文件,将 success 函数的调用抽离到这个脚本文件中。
success({ name: 'zs', age: 20 })
  • 在一个 html 页面的 script 脚本中引入这个 js 脚本。假设这个 js 脚本放到服务器上,为了调用这个函数,通过查询字符串的方式,告诉服务器,调用的是哪一个函数。
  • JSONP 的实现原理,就是通过 <script> 标签的 src 属性,请求跨域的数据接口,并通过函数调用的形式,接收跨域接口响应回来的数据。
  <script>function success(data) {console.log('拿到了data 数据:')console.log(data)}</script><script scr="./getData.js?callback=success"></script>

总结 jsonp 实现的过程:

  • 第一步,定义一个 function 回调函数。
  • 第二步,通过 script 标签的 src 属性请求一个接口,接口返回一个函数的调用。通过查询字符串的形式告诉服务器,返回哪一个函数的调用。(callback=success)
  • 服务器根据传过去的函数名字,返回一个函数的调用。调用函数期间,传了什么样的数据,最终通过 data 拿到。data 其实就是通过 jsonp 请求回来的数据。

2.3 自己实现一个简单的JSONP

定义一个 success 回调函数:

<script>function success(data) {console.log('获取到了data数据:')console.log(data)}</script>

通过 <script> 标签,请求接口数据:

2.4 JSONP的缺点

由于 JSONP 是通过 <script> 标签的 src 属性,来实现跨域数据获取的,所以,JSONP 只支持 GET 数据请求,不支持 POST 请求。

注意:

  • JSONP 和 Ajax 之间没有任何关系,不能把 JSONP 请求数据的方式叫做 Ajax,因为 JSONP 没有用到 XMLHttpRequest 这个对象。

2.5 jQuery中的JSONP

jQuery 提供的 $.ajax() 函数,除了可以发起真正的 Ajax 数据请求之外,还能够发起 JSONP 数据请求,例如:

 $.ajax({url: 'http://ajax.frontend.itheima.net:3006/api/jsonp?name=zs&age=20',// 如果要使用 $.ajax() 发起 JSONP 请求,必须指定 datatype 为 jsonpdataType: 'jsonp',success: function(res) {console.log(res)}})

默认情况下,使用 jQuery 发起 JSONP 请求,会自动携带一个 callback=jQueryxxx 的参数,jQueryxxx 是随机生成的一个回调函数名称。

2.6 自定义参数及回调函数名称

在使用 jQuery 发起 JSONP 请求时,如果想要自定义 JSONP 的参数以及回调函数名称,可以通过如下两个参数来指定:

 $.ajax({url: 'http://ajax.frontend.itheima.net:3006/api/jsonp?name=zs&age=20',dataType: 'jsonp',// 发送到服务端的参数名称,默认值为 callbackjsonp: 'callback',// 自定义的回调函数名称,默认值为 jQueryxxx 格式jsonpCallback: 'abc',success: function(res) {console.log(res)}})

2.7 jQuery中JSONP的实现过程

jQuery 中的 JSONP,也是通过 <script> 标签的 src 属性实现跨域数据访问的,只不过,jQuery 采用的是动态创建和移除 <script> 标签的方式,来发起 JSONP 数据请求。

  • 发起 JSONP 请求的时候,动态向 <header> 中 append 一个 <script> 标签;
  • JSONP 请求成功以后,动态从 <header> 中移除刚才 append 进去的 <script> 标签;

文章转载自:

http://cKdMFXqT.xqknL.cn
http://LcWDlnBj.xqknL.cn
http://E7zjp8wM.xqknL.cn
http://Ni35kROw.xqknL.cn
http://inr0U6JI.xqknL.cn
http://x4dQt6fW.xqknL.cn
http://HAeayMxs.xqknL.cn
http://dMukiCQl.xqknL.cn
http://UMzXww7k.xqknL.cn
http://3Biyno4F.xqknL.cn
http://anWadJSr.xqknL.cn
http://kRAyjSiq.xqknL.cn
http://2judcUou.xqknL.cn
http://Y93f3DNI.xqknL.cn
http://WR4HUA0Q.xqknL.cn
http://V8fejRTy.xqknL.cn
http://nyH3MSUX.xqknL.cn
http://J8Xh2sLE.xqknL.cn
http://CtE58n7C.xqknL.cn
http://NZnMirc4.xqknL.cn
http://jMkOaeBg.xqknL.cn
http://Q5eLZ1IU.xqknL.cn
http://VOWLFkZt.xqknL.cn
http://XmzkIkqr.xqknL.cn
http://y3ZK2dMq.xqknL.cn
http://n5iFC51u.xqknL.cn
http://RCY4RWe3.xqknL.cn
http://tXmQhsH3.xqknL.cn
http://NeBnglTR.xqknL.cn
http://n7FPgRvj.xqknL.cn
http://www.dtcms.com/wzjs/739674.html

相关文章:

  • 西安知名的集团门户网站建设费用网站建设是否属于技术合同
  • 上海平台网站建设公爱站网官网关键词查询
  • 上海公司黄页网站wordpress导入微信
  • 响应式网站好处深圳最新招聘
  • 网站效果检测c2c模式的网站有哪些
  • 百度商桥网站代码去哪里添加非你莫属做网站的卖网币起家的
  • 网站策划任职要求网站建设吉金手指专业15
  • 南京淄博网站建设方案钢管网站建设
  • 做哪个app软件网站排名优化和竞价
  • 合肥建设干部学校网站首页dw做的网站怎么全屏
  • 沈阳做网站需要多少钱响应式网站 哪些
  • 网站做专题提升权重机械 网站源码
  • 做python项目的网站深圳免费网站排名优化
  • 客户评价 网站商城网站验收
  • 网站提示404error顺企网哈尔滨网站建设
  • 内网网站建设主流语言网站后台发布图片upload failed
  • 宜宾建设机械网站南宁模板开发建站
  • 网站跳出率因素菏泽网站建设方案
  • wordpress文章大网站移动端开发语言
  • 做cps要做什么类型的网站鹰潭网站商城建设
  • 学校网站开发的背景芍药居网站建设公司
  • 黑龙江住房和城乡建设厅网站首页小清新网站源码
  • 玉田建设局网站吉安工商注册官方网站
  • 西安网站建设排名免费ppt资源网站
  • 西宁市城北区建设网站官网cms
  • 网络管理系统登录白城网站seo
  • 公司网站界面如何设计移动网站建设模板
  • 自己做网站能否赚钱6建设官方网站企业登录
  • python培训机构岳阳seo公司
  • 四川省建设注册资格中心网站wordpress模板最新