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

大连网站建设讯息公司网站建设说明书

大连网站建设讯息,公司网站建设说明书,可以做免费广告的网站有哪些,wordpress登陆后评论AJAX和跨域引言正文一、AJAX请求1、模拟get和post请求2、封装一个简易的AJAX二、状态码1、xhr.readyState2、xhr.status三、跨域1、同源策略#xff08;1#xff09;同源策略是什么#xff08;2#xff09;为什么浏览器会有同源策略#xff1f;#xff08;3#xff09;同… AJAX和跨域引言正文一、AJAX请求1、模拟get和post请求2、封装一个简易的AJAX二、状态码1、xhr.readyState2、xhr.status三、跨域1、同源策略1同源策略是什么2为什么浏览器会有同源策略3同源策略限制内容有哪些4加载图片、js和css时可以无视同源策略2、跨域解决方案1跨域是什么2解决跨域的方式1JSONP客户端操作2CORS服务器操作结束语引言 ajax对于前端来说是一个特别基础也特别实用的一个功能基本上我们目前访问的很多网页都有用到 ajax 的功能。接下来开始讲解关于AJAX请求以及关于跨域的一些内容。 正文 一、AJAX请求 Ajax 即 Asynchronous Javascript And XML异步JavaScript和XML。 在实现 Ajax 之前我们先来了解下 XMLHttpRequest 。 XMLHttpRequest 是网页实现 AJAX 最主要的一个 API 。可能有很多同学知道 AJAX 也用过 AJAX 但是却不知道它是基于 XMLHttpRequest 来实现的。 那么接下来我们用 XMLHttpRequest 这个 API 来模拟一个 get 和 post 请求。 1、模拟get和post请求 1模拟get请求 /*** 使用xhr模拟实现GET请求*/ const xhr new XMLHttpRequest(); xhr.open(GET, /test.json, true); //false表示同步请求true表示异步请求 xhr.onreadystatechange function () {// 这里的函数异步执行if(xhr.readyState 4){if(xhr.status 200){// console.log(// JSON.parse(xhr.responseText)// );alert(xhr.responseText);}} } // 因为是get请求所以只要发送null就好 xhr.send(null);2模拟post请求 /*** 使用xhr模拟实现post请求*/ const xhr new XMLHttpRequest(); //模拟请求一个登录接口 xhr.open(POST, /login, true); //false表示同步请求true表示异步请求 xhr.onreadystatechange function(){if(xhr.readyState 4){if(xhr.status 200){console.log(JSON.parse(xhr.responseText));alert(xhr.responseText);}else{console.log(其他情况);}} }const postData {userName: zhangsan,password: xxx }xhr.send(JSON.stringify(postData));2、封装一个简易的AJAX function ajax(url){const p new Promise((resolve, reject) {const xhr new XMLHttpRequest();xhr.open(GET, url, true);xhr.onreadystatechange function(){//状态码的解析详细看第二点if(xhr.readyState 4){if(xhr.status 200){resolve(JSON.parse(xhr.responseText));}else if(xhr.status 404){reject(new Error(404 not found));}}}xhr.send(null);});return p; }const url 你的json数据路径; ajax(url) .then(res console.log(res)) .catch(err console.error(err));二、状态码 看完上面的模拟过程之后我们来讲解其中的几个知识点。 1、xhr.readyState readyState状态值readyState含义0未初始化- 还没有调用send()方法1载入- 已调用send()方法正坐在发送请求2载入完成- send()方法执行完成已经接收到全部响应内容3交互- 正在解析响应内容4完成响应内容解析完成可以在客户端调用 2、xhr.status status状态值status含义2xx表示成功处理请求如2003xx需要重定向浏览器直接跳转如301 302 3044xx客户端请求错误如404 4035xx服务器端错误 三、跨域 1、同源策略 1同源策略是什么 同源策略是浏览器自带的一种安全策略它是指网址中的协议、域名、端口三个都相同时才能互相访问即若协议、域名、端口有一个不相同时浏览器禁止页面加载或执行与自身不同域的脚本。 2为什么浏览器会有同源策略 因为如果没有同源策略别人就可以轻松的获取我们网站的 cookie 信息或是对网页进行 DOM 操作 这是一件非常恐怖的事情尤其是 cookie 信息它里面存在着 sessionID 这是与服务端的 session 会话的重要凭证如果被别人得到了 cookie 有很大可能会造成数据被盗取等后果。 3同源策略限制内容有哪些 存储在浏览器中的数据如 localStroage 、 Cookie 和 IndexedDB 不能通过脚本跨域访问不能通过脚本操作不同域下的 DOM 不能通过 ajax 请求不同域的数据。 4加载图片、js和css时可以无视同源策略 img src 跨域的图片地址 / link href 跨域的css地址/ script src 跨域的js地址/script如以上代码所示当我们在加载以上类型的 图片、css和js 时可以无视同源策略。因为像 图片、css文件和js文件 一般可使用 cdn 来进行缓存而 cdn 一般是外域。同时 js 文件也可以通过 JSONP 来实现跨域。 2、跨域解决方案 1跨域是什么 所有的跨域都必须经过 server 端允许和配合未经 server 端允许就实现跨域说明浏览器有漏洞是一种危险信号。 2解决跨域的方式 1JSONP客户端操作 ① JSONP的原理 JSONP(JSON with Padding)是数据格式 JSON 的一种“使用模式”可以让网页从别的网域要数据。 根据 XmlHttpRequest 对象受到同源策略的影响而利用 用 JSONP 抓到的数据并不是 JSON 而是任意的 JavaScript 用 JavaScript 解释器运行而不是用 JSON 解析器解析。 所以通过 Chrome 查看所有 JSONP 发送的 Get 请求都是 js 类型而非 XHR 。 ② JSONP包含两部分回调函数和数据 回调函数是当响应到来时要放在当前页面被调用的函数。 数据就是传入回调函数中的 json 数据也就是回调函数的参数了。 function handleResponse(response){console.log(The responsed data is: response.data); } var script document.createElement(script); script.src http://www.baidu.com/json/?callbackhandleResponse; document.body.insertBefore(script, document.body.firstChild); /*handleResonse({data: zhe})*/ //原理如下 //当我们通过script标签请求时 //后台就会根据相应的参数(json,handleResponse) //来生成相应的json数据(handleResponse({data: zhe})) //最后这个返回的json数据(代码)就会被放在当前js文件中被执行 //至此跨域通信完成③ 缺点 只能使用Get请求。不能注册success、error等事件监听函数不能很容易的确定 JSONP 请求是否失败。JSONP 是从其他域中加载代码执行容易受到跨站请求伪造的攻击其安全性无法确保。 2CORS服务器操作 ① cors的原理 CORS (Cross-Origin Resource Sharing)即跨域资源共享是一种浏览器技术的规范提供了 Web 服务从不同域传来沙盒脚本的方法以避开浏览器的同源策略确保安全的跨域数据传输。现代浏览器使用 CORS 在 API 容器如 XMLHttpRequest 来减少 HTTP 请求的风险来源。与 JSONP 不同CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。 ② cors 的跨域方法一般是服务端进行操作服务端需要设置以下 http header //设置允许跨域的域名称不建议直接写“*” response.setHeader(Access-Control-Allow-Origin, http://localhost:8080);//填写允许跨域的http请求方法 //当 method OPTIONS 时, 属于预检(复杂请求), 当为预检时, 可以直接返回空响应体, 对应的 http 状态码为 204 response.setHeader(Access-Control-Allow-Methods, PUT,POST,GET,DELETE,OPTIONS);//设置需要支持的跨域请求头如果设置为*表明服务器支持所有头信息字段也可设置为X-Request-With和Content-Type response.setHeader(Access-Control-Allow-Headers, X-Request-With, Content-Type); // 服务器收到请求以后检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后确认允许跨源请求就可以做出回应。//表示具体请求中的媒体类型信息 response.setHeader(Content-Type, application/json;charsetutf-8);//设置预检结果的缓存, 单位(秒) response.setHeader(Access-Control-Max-Age, 86400);/*如果需要支持 cookies,*Access-Control-Allow-Origin 不能设置为 *,*并且 Access-Control-Allow-Credentials 需要设置为 true*(注意前端请求需要设置 withCredentials true) */ response.setHeader(Access-Control-Allow-Credentials, false);结束语 以上文章浅谈了 ajax 以及常用的跨域方案没有深究到很细节层面的内容。希望对大家有帮助 关于Ajax以及跨域的一些信息就讲到这里啦如有疑问欢迎评论区评论或私信我交流~ 关注公众号 星期一研究室 不定期分享学习干货 如果这篇文章对你有用记得点个赞加个关注再走哦~
http://www.zqtcl.cn/news/498463/

相关文章:

  • 后端开发需要掌握哪些知识潍坊优化公司
  • 专业手机网站制作哪家好wordpress wp-polls
  • 网站建设前分析网页制作素材按钮
  • 做视频网站怎么对接云盘松江新城网站建设
  • 温州阿里巴巴网站建设企业宣传片怎么拍
  • 淮阳住房城乡建设局网站阿里巴巴做国际网站要多少钱
  • 电子商务个人网站可以备案吗短网址还原
  • 网站内容由什么组成部分组成部分电子商务网站建设主管的策划书
  • 云服务器安装win系统做网站seo三人行论坛
  • 电气网站设计机械设计软件solidworks
  • 内网网站建设所需硬件设备厦门关键词排名提升
  • 网站动态海报效果怎么做的最专业网站建
  • 学校如何建设网站北京市住房及城乡建设部网站
  • 响应式网站制作流程全国城建培训中心官网查询证书
  • 北京工程建设信息网站中国市场网
  • xml做网站源码免费网站是
  • 中国工商建设标准化协会网站织梦app网站模板
  • 怎么做好网络销售文大侠seo博客
  • wish网站应该怎么做网站建设前规划
  • 网站建设目的是什么建筑机械人才培训网官网
  • 建筑建设行业网站大型购物网站开发
  • 手机网站开发用什么设计之家网
  • 网站开发平台有哪些什么是网络开发
  • 学校网站前置审批网站做哪些比较有意思
  • 怎么给企业做网站学计算机网站建设
  • 网站关键词优化排名技巧aiyuan wordpress
  • 建设工程资质证书二维码扫描网站自己做的网站如何让qq登录
  • 网站域名有效期wordpress 特别慢
  • 建立个人网站服务器如何用dedecms做网站
  • php网站开发实市场推广策略 包括哪些