《如何解决ajax跨域问题》由会员分享,可在线阅读,更多相关《如何解决ajax跨域问题(5页珍藏版)》请在人人文库网上搜索。

1、如何解决ajax跨域问题 由于此前很少写前端的代码(哈哈,不合格的程序员啊),最近项目中用到json作为系统间 交互的手段,自然就伴随着众多ajax请求,随之而来的就是要解决ajax的跨域问题。本 篇将讲述一个小白从遇到跨域不知道是跨域问题,到知道是跨域问题不知道如何解决,再 到解决跨域问题,最后找到两种方法解决ajax跨域问题的全过程。 不知是跨域问题 起因是这样的,为了复用,减少重复开发,单独开发了一个用户权限管理系统,共其他系 统获取认证与授权信息,暂且称之为A系统;调用A系统以B为例。在B系统中用ajax 调用A系统系统的接口(数据格式为json),当时特别困惑,在 A系统中访问相应的。

2、url可 正常回返json数据,但是在B系统中使用ajax请求同样的url则一点儿反应都没有,好像 什么都没有发生一样。这样反反复复改来改去好久都没能解决,于是求救同事,提醒可能 是ajax跨域问 题,于是就将这个问题当做跨域问题来解决了。 知跨域而不知如何解决 知道问题的确切原因,剩下的就是找到解决问题的方法了。google 了好久,再次在同事的指 点下知道jQuery 的ajax有jsonp这样的属性可以用来解决跨域的问题。 找到一种解决方式 现在也知道了怎样来解决跨域问题,余下的就是实现的细节了。实现的过程中错误还是避免不 了的。由于不了解json和jsonp两种格式的区别,也犯了错误,。

3、 google 了好久才解决。 首先来看看在页面中如何使用jQuery 的ajax解决跨域问题的简单版: $(docume nt).ready(fu nctio n() var url= htt p:/localhost:8080/WorkGrou pMa nagme nt/open /getGrou pByld +?id=1 $.ajax( url:url, dataT ype:jsonp, processData:false , type:get, success:f un cti on( data) alert(data .n ame); , error:fu nction (XMLHt。

4、t pRequest, textStatus, errorThrow n) alert(XMLHtt pRequest.status); alert(XMLHtt pRequest.readyState); alert(textStatus); ); ); 这样写是完全没有问题的,起先error的处理函数中仅仅是alert(“error ”,)为了进一步弄清 楚是什么原因造成了错误,故将处理函数变为上面的实现方式。最后一行alert使用为; parsererror。百思不得其解,继续google,最终还是在万能的stackoverflow 找至打答 案,链接在这里。原因是jsonp的格式与js。

5、on格式有着细微的差别,所以在 server端的代码 上稍稍有所不同。 比较一下json与jsonp格式的区别: json 格式: message:获取成功, state : 1, result : name:工作组 1,id : 1, description :11 json P 格式: callback( message:获取成功, state : 1, result : name:工作组 1,id : 1, description :11 ) 看岀来区别了吧,在url中callback 传到后台的参数是神马callback 就是神马,jso np 比 json外面有多了一层,callba。

6、ck。这样就知道怎么处理它了。于是修改后台代码。 后台java代码最终如下: RequestMapping(value = /getGroupByld) public String getGroupById(RequestParam( id ) Long id, Htt pServletRequest request, Http ServletRes ponse res pon se) throws IOExce pti on Stri ng callback = request.get Parameter( ReturnObject result =null ; callback); Gro。

7、up group = null ; try group = group Service.getGro up Byld(id); result = newReturnObject(group,获取成功, Con sta nts只ESULT_SUCCESS); catch (BusinessException e) e. prin tStackTrace(); result = newReturnObject(group,获取失败, Co nsta nts. RESULT_FAILED); String json = JsonConv erter.bea n2Js on( result); res。

8、pon se.setC onten tT ype(text/html ); respon se.setCharacterE ncodi ng(utf-8); Prin tWriterout = res pon se.getWriter(); (+ json +); out .prin t(callback + return null ; 注意这里需要先将查询结果转换我 就变成了 jsonp。指定数据类型为 json格式,然后用参数 callback在json外面再套一层, jsonp 的ajax就可以做进一步处理了。 Parsererror的原因。原因在于盲目的把 json格 处理,造成了这个。

9、错误,此时server端代码是这样 虽然这样解决了跨域问题,还是回顾下造成 式的数据当做jsonp格式的数据让ajax 的: RequestMapping(value = /getGroupByld) Res pon seBody public ReturnObject getGroupById(RequestParam( id ) Long id, Htt pServletRequest request, Http ServletRes ponse res pon se) String callback = request.getParameter(callback); ReturnObje。

10、ct result =null ; Group group = null ; try group = group Service.getGro up ById(id); result = newReturnObject(group, 获取成功, Con sta nts只ESULT_SUCCESS); catch (BusinessException e) e. prin tStackTrace(); newReturnObject(group,获取失败, Co nsta nts. RESULT_FAILED); return result; 三3 result = 至此解决ajax跨域问题的第。

11、一种方式就告一段落。 追加一种解决方式 追求永无止境,在google的过程中,无意中发现了一个专门用来解决跨域问题的 件-jquery-js onp。 jQuery 插 有第一种方式的基础,使用jso np插件也就比较简单了,server端代码无需任何改动。 来看一下如何使用jquery-jso np插件解决跨域问题吧。 var url= htt p:/localhost:8080/WorkGrou pMan agme nt/open /getGrou pByld + ?id=1 $.jso np ( url : url, success : function(data) $( #current-group).text(当前工作组:+data.result.name); , error : function(d,msg) alert( Could not find user ); k +msg); 至此两种解决跨域问题的方式就全部介绍完毕。。

什么是ajax跨域问题,如何解决ajax跨域问题相关推荐

  1. mvc ajax post json数据,springmvc解决ajax post json格式数据的跨域问题

    前言:今天解决js跨域,搞了一下午,呜呜,以下是我整理的一些解决方法. Paste_Image.png JsonTest click me var jsonData = JSON.stringify( ...

  2. Ajax调用springboot接口,Springboot解决ajax+自定义headers的跨域请求问题.pdf

    Springboot解解决决ajax+自自定定义义headers的的跨跨域域请请求求问问题题 1..什什么么是是跨跨域域 由于浏览器同源策略 (同源策略,它是由Netscape提出的一 著名的安全策略 ...

  3. 苹果ajax跨域,vue中解决axios跨域问题【ajax在vue中的应用】

    兴冲冲的开始用vue封装组件.自定义指令之后,开始实战.诶,等等,貌似少了--ajax交互? 好吧大致研究了一下axios,但是存在以下两个问题: 1.跨域问题 2.数据格式问题 跨域信息示例: Fa ...

  4. ajax 没有权限 -quot;跨域quot;,如何解决AJAX中跨域访问出现'没有权限'的错误

    如何解决AJAX中跨域访问出现'没有权限'的错误 很多人在使用AJAX调用别人站点内容的时候,JS会提示"没有权限"错误,这是XMLHTTP组件的限制-安全起见 禁止访问非同域的网 ...

  5. php ajax session失效,PHP中解决ajax请求session过期退出登录问题

    1.session过期,如果直接是url请求,或者用户在打开的系统页面中直接清除缓存及cookie信息,可直接在php的入口文件中调用以下封装的方法,进行session信息判断以及页面的跳转,如: i ...

  6. ajax返回一直进入error_解决ajax返回验证的时候总是弹出error错误的方法

    这篇文章主要介绍了解决ajax返回验证的时候总是弹出error错误的方法,感兴趣的小伙伴们可以参考一下 发一个简单案例: 前台: 用户登录 $(function(){ var loginDialog; ...

  7. 前端跨域请求get_解决前端跨域请求的几种方式

    利用 JSONP 实现跨域调用 说道跨域调用,可能大家首先想到的或者听说过的就是 JSONP 了. 1.1 什么是JSONP JSONP 是 JSON 的一种使用模式,可以解决主流浏览器的跨域数据访问 ...

  8. 前端跨域请求get_解决前端跨域问题方案汇总

    1.同源策略如下: URL 说明 是否允许通信 http://www.a.com/a.js http://www.a.com/b.js 同一域名下 允许 http://www.a.com/lab/a. ...

  9. 跨域问题的解决-gateway跨域接解决方案,使用CorsWebFilter

    关于跨域问题请先看我的另一篇文章: https://blog.csdn.net/fsjwin/article/details/114444826 这里再列举出一种编码方式,(注意不是nginx的解决方 ...

最新文章

  1. 【OpenCV 4开发详解】点集拟合
  2. opencv---颜色空间转化并实现物体跟踪
  3. 22套精美的网页按钮图标设计推荐(包括PSD和AI文件)
  4. MHA环境搭建【4】manager相关依赖的解决
  5. 服务器迁移虚拟化实施方案,虚拟化实施方案
  6. Android Studio 2.0来啦
  7. C++ Qt高级开发视频教程
  8. Java视频教程免费分享(网盘直接取)
  9. 面向对象-封装继承多态
  10. 计算机快速看图教程,CAD快速看图教程:CAD图纸测量方法集锦
  11. latex脚注标号混合数字和特殊字符
  12. IO流总结(基础知识)
  13. 模式识别基本概念小结(学习笔记)
  14. win10 管理员权限运行
  15. 短信验证API文档说明
  16. 一个性能优化实操案例
  17. linux软件保护,国产Linux违反《计算机软件保护条例》的说明
  18. 理想世俗化:受挫的年轻一代 未来在哪里
  19. MTK资料:在MT6735平台上如何调试SII9024A
  20. python实训报告万能模板_实训报告万能模板五篇

热门文章

  1. Aes加/解密工具类 --Java
  2. 20V转12V转9V转5V转3.3V转3V芯片介绍,DC-DC和LDO
  3. 【转载】UART流控
  4. 为ListViewItem 添加双击事件
  5. 2018-10-19-C#-AddRange-添加位置
  6. linux 软raid恢复,linux软raid下线后恢复
  7. 《猩球黎明》首曝海报
  8. 各种短视频素材,一网打尽,新手小白抓紧收藏,做起来能事半功倍
  9. ”AMD锐龙3000上市 Intel酷睿i5-9600K处理器大降价
  10. cesium地形裁剪与模型裁剪的使用