javascript跨域调用基于json的restfulapi_javascript技巧

javascript跨域调用基于json的restfulapi_javascript技巧

ID:31316938

大小:70.00 KB

页数:3页

时间:2019-01-08

javascript跨域调用基于json的restfulapi_javascript技巧_第1页
javascript跨域调用基于json的restfulapi_javascript技巧_第2页
javascript跨域调用基于json的restfulapi_javascript技巧_第3页
资源描述:

《javascript跨域调用基于json的restfulapi_javascript技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、JavaScript跨域调用基于JSON的RESTfulAPI1.基本术语AJAX(AsynchronousJavaScriptAndXML,异步JavaScript和XML):AJAX是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,AJAX可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。JSON(JavaScriptObjectNotation):JSON是一种轻量级的数据交换格式,可以看成是由大括号包裹起來的多个^cy/valuc"对,格式如2{〃firstName":"Bre

2、tt","lastName":,zMcLaughlin",,zemail/z:,zabcdefg@gmai1.conT}。CrossDomain(跨域):跨域问题是[tlTJavaScript语言安全限制中的同源策略造成的,当在页面上使用AJAX请求访问其他服务器的数据时,客户端就会岀现跨域问题。SameOriginPolicy(同源策略):同源策略是指一段脚本只能读取来自同一来源的窗口和文档的属性,域名、协议、端口均相同,即是同源。2.JavaScript跨域解决方案目前主要有三种JavaScript跨域解决方案:基于iframe实现跨域:两

3、个页面必须展于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是HTTP)和同一端口(例如都是80)。iframe方案对域名、协议、端口的限制太多,用处不大。基于Script标签实现跨域(JSONP方案):JSONP(JSONwithPadding)是JSON的一种“使用模式”,是一种非官方的跨域数据交互协议,可用于解决主流浏览器的跨域数据访问的问题。JSONP方案的局限性在于:JSONP只能实现GET请求。基于后台代理实现跨域(CORS方案):CORS(Cross-OriginResourceSharing

4、,跨域资源共享)是一个W3C标准,它允许浏览器向跨源服务器发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。3.基于后台代理实现跨域(CORS方案)具体解决方案如下:①服务器端服务器端需要在正常的HTTP回应屮增加Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-Headers等字段。我的服务器端是用Python写的,HTTP请求调用的webob.Request。修改办法是,在"res=req.get_respon

5、se(seif.app)n这行代码之后,需要增加如下几行内容:res.headerlist・append(('Access-Control-Allow-Origin','*'))res.headerlist・append(CAccess-Control-Allow-Methods','GET,POST,))res.headerlist,append(('Access-Control-Max~Age,,'3600'))res.headerlist.append(('Access-Control-Al1ow-Headers5,'Acccss-Con

6、trol-Allow-Origin,Acccss-Control-Allow-Mcthods,Access-Control-Max-Age,X-Auth-Token,Content-Type,Accept'))其中,Access-Control-Allow-Origin最好限制为前端的访问地址,这样才和对安全,例如:res・hcadcrlist・appcnd(('Access一Control一Allow—Origin','http://10.111.121.26:8080,))另外,Access-Control-Max-Age可以设置CORS相

7、关配置的缓存时间,这样客户端就不必每次都先进行一次预检请求(PreflightRequest)。预检请求会先向服务器端发出一个OPTIONS方法、包含“Origin”头的请求。只有该请求获得允许以后,才会发起真实的跨域请求。所以,服务器端在对X-Auth-Token进行鉴权时述需要放过预检请求,例如:defprocessrequest(self,req):if(req.headers,get(*X-Auth-Token,)!二'open-sesame')and(req.method!='OPTIONS'):returnexc・HTTPForbi

8、dden()②客户端HTTP请求需要注意到几个地方:data需要保证是JSON格式的字符串;contcntType规定了编码格式是UTF8;dataT

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。