欢迎来到天天文库
浏览记录
ID:30504858
大小:16.63 KB
页数:4页
时间:2018-12-30
《j s跨域原因及其解决方案》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解JS跨域原因及其解决方案 产生跨域问题的原因 跨域问题是浏览器同源策略限制,当前域名的js只能读取同域下的窗口属性。 跨域问题产生的场景 当要在在页面中使用js获取其他网站的数据时,就会产生跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时以及hybridapp中请求数据,浏览器就会提示以下错误。这种场景下就要解决js的跨域问题。 XMLHttpReque
2、stcannotloadhttp://你请求的域名.No'Access-Control-Allow-Origin'headerispresentontherequestedresource.Origin'http://当前页的域名'isthereforenotallowedaccess. 哪些情况会产生跨域问题 一个网站的网址组成包括协议名,子域名,主域名,端口号。比如https://github.com/,其中https是协议名,www是子域名,github是主域名,端口号是80,当在在页面中从一个url请求数据时,如果这
3、个url的协议名、子域名、主域名、端口号任意一个有一个不同,就会产生跨域问题。 即使是在http://localhost:80/页面请求http://127.0.0.0:80/也会有跨域问题对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 解决跨域问题 解决跨域问题有以下一种方式 使用jsonp 服务端代
4、理 服务端设置RequestHeader头中Access-Control-Allow-Origin为指定可获取数据的域名 jsonp的解决方式 json≠jsonp 原理 jsonp解决跨域问题的原理是,浏览器的script标签是不受同源策略限制(你可以在你的网页中设置script的src属性问cdn服务器中静态文件的路径)。那么就可以使用script标签从服务器获取数据,请求时添加一个参数为callbakc=?,?号时你要执行的回调方法。 前端实现 以jQuery2.1.3的ajax方法为例 $.ajax({u
5、rl:"",dataType:"jsonp",data:{params:""}}).done(function(data){//dosomething..})对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解 仅仅是客户端使用jsonp请求数据是不行的,因为jsonp的请求是放在script标签中的,和普通请求不同
6、的地方在于,它请求到的是一段js代码,如果服务端返回了json字符串,那么浏览器就会报错。所以jsonp返回数据需要服务端做一些处理。 服务端返回数据处理 上面说了jsonp的原理是利用script标签来解决跨域,但是script标签是用来获取js代码的,那么我们怎么获取到请求的数据呢。 这就需要服务端做一些判断,当参数中带有callback属性时,返回的type要为application/javascript,把数据作为callback的参数执行。下面是jsonp返回的数据的格式示例 /**/typeofjQuery_
7、38==='function'&&jQuery_38({"code":1,"msg":"success","data":{"test":"test"}}); 这是express4.12.3关于jsonp的实现代码 代码如下: //jsonpif(typeofcallback==='string'&&callback.length!==0){this.charset='utf-8';this.set('X-Content-Type-Options','nosniff');this.set('Content-Type','te
8、xt/javascript');//restrictcallbackcharsetcallback=callback.replace(/[^[]w$.]/g,'');//replacecharsnotallowedinJavaScriptthatarein
此文档下载收益归作者所有