j s跨域原因及其解决方案

上传人:bin****86 文档编号:59370511 上传时间:2018-11-06 格式:DOCX 页数:4 大小:16.63KB
返回 下载 相关 举报
j s跨域原因及其解决方案_第1页
第1页 / 共4页
j s跨域原因及其解决方案_第2页
第2页 / 共4页
j s跨域原因及其解决方案_第3页
第3页 / 共4页
j s跨域原因及其解决方案_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《j s跨域原因及其解决方案》由会员分享,可在线阅读,更多相关《j s跨域原因及其解决方案(4页珍藏版)》请在金锄头文库上搜索。

1、我真正系统地接触和学习党的基本知识是在这次中级党校的培训班上。通过学习,了解了党的发展历程,对党的性质、宗旨、任务等基本知识有了进一步的了解J S跨域原因及其解决方案产生跨域问题的原因跨域问题是浏览器同源策略限制,当前域名的js只能读取同域下的窗口属性。跨域问题产生的场景当要在在页面中使用js获取其他网站的数据时,就会产生跨域问题,比如在网站中使用ajax请求其他网站的天气、快递或者其他数据接口时以及hybrid app中请求数据,浏览器就会提示以下错误。这种场景下就要解决js的跨域问题。XMLHttpRequest cannot load http:/你请求的域名. No Access-Co

2、ntrol-Allow-Origin header is present on the requested resource. Origin http:/当前页的域名 is therefore not allowed access.哪些情况会产生跨域问题一个网站的网址组成包括协议名,子域名,主域名,端口号。比如 https:/ ,其中https是协议名,www是子域名,github是主域名,端口号是80,当在在页面中从一个url请求数据时,如果这个url的协议名、子域名、主域名、端口号任意一个有一个不同,就会产生跨域问题。即使是在 http:/localhost:80/ 页面请求 http:/

3、127.0.0.0:80/ 也会有跨域问题解决跨域问题解决跨域问题有以下一种方式使用jsonp服务端代理服务端设置Request Header头中Access-Control-Allow-Origin为指定可获取数据的域名jsonp的解决方式jsonjsonp原理jsonp解决跨域问题的原理是,浏览器的script标签是不受同源策略限制(你可以在你的网页中设置script的src属性问cdn服务器中静态文件的路径)。那么就可以使用script标签从服务器获取数据,请求时添加一个参数为callbakc=?,?号时你要执行的回调方法。前端实现以jQuery2.1.3的ajax方法为例$.ajax(

4、 url:, dataType:jsonp, data: params: ).done(function(data) /dosomething. )仅仅是客户端使用jsonp请求数据是不行的,因为jsonp的请求是放在script标签中的,和普通请求不同的地方在于,它请求到的是一段js代码,如果服务端返回了json字符串,那么浏览器就会报错。所以jsonp返回数据需要服务端做一些处理。服务端返回数据处理上面说了jsonp的原理是利用script标签来解决跨域,但是script标签是用来获取js代码的,那么我们怎么获取到请求的数据呢。这就需要服务端做一些判断,当参数中带有callback属性时,

5、返回的type要为application/javascript,把数据作为callback的参数执行。下面是jsonp返回的数据的格式示例/*/ typeof jQuery_38 = function & jQuery_38(code:1,msg:success,data:test:test);这是express4.12.3关于jsonp的实现代码代码如下:/ jsonp if (typeof callback = string & callback.length != 0) this.charset = utf-8; this.set(X-Content-Type-Options, nosn

6、iff); this.set(Content-Type, text/javascript); / restrict callback charset callback = callback.replace(/w$./g, ); / replace chars not allowed in JavaScript that are in JSON body = body .replace(/u2028/g, u2028) .replace(/u2029/g, u2029); / the /*/ is a specific security mitigation for Rosetta Flash JSONP abuse / the typeof check is just to reduce client error noise body = /*/ typeof + callback + = f对党的认识也有了进一步的提高。才真正体会到了中国共产党的伟大、光荣和正确,更感到只有中国共产党是全中国最广大人民利益的忠实代表

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 总结/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号