通过独立html用ajax访问基于ssh2中方法的问题

发布时间:2020-07-16 19:59:27 作者:15235125653
来源:网络 阅读:641

今天遇到的问题是如题,简单说就是ajax的跨域问题;首先问题是这样出现的,在容器(tomcat6)之外(桌面上)新建了个测试html--test.html,调用在容器中的项目xxx中的方法,所有流程代码都没有问题,方法中返回的是json格式字符串,返回方式也是json像这样:

        <result name="success" type="json">
                <param name="root">json</param>

        </result>

页面代码:

$.get("http://localhost:8080/xxx/queryInfo.action?id=111",

     function(data){

        alert(data.name)
},"json")

使用FF的firebug调试发现test.html的请求已经通过,服务器状态200,延时40ms,但是整个请求是红色的代表错误;之后把test.html中的请求URL粘贴到地址栏,发现一切正常,之后纠结中....

使用chrome的控制台调试发现:

XMLHttpRequest cannot load http://localhost:8080/xxx/queryInfo.action?id=111   .No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

度娘之后发现是跨域的问题,

参考http://www.cnblogs.com/chopper/archive/2012/03/24/2403945.html 后将代码改为

$.get("http://localhost:8080/xxx/queryInfo.action?id=111&callback=?",

     function(data){

        alert(data.name)
},"jsonp")

之后调试发现报Uncaught SyntaxError: Unexpected token : 这个错误,打开错误代码发现返回的json格式错误,原因是在请求headers里加了这么2段

  1. callback:jQuery110209291235436685383_1437019561773

  2. _:1437019561774

然后就解析不了第二个":",所以就报错Unexpected token :

继续度娘之后发现是对于jsonp来说有特殊格式需要改,

参考http://kb.cnblogs.com/page/139725/ 后发现是需要改变返回值的封装,但是没有现成的json转jsonp的工具,技术,封装类(比如string转json之类的工具),需要手动写,果断放弃继续调试...

继续度娘无意间发现这个帖子

http://blog.csdn.net/z69183787/article/details/45896577 将struts.xml文件中返回值加一条
<param name="callbackParameter">callback</param>

完美解决~

至此困扰2个多小时的问题解决,特此记录

PS:jquery 中对于jsonp的封装,对get类型请求支持比较好,建议用GET方法请求,最好不要用POST

又PS:还有一种暴力跨域方法,貌似只支持chrome和安卓系统,

参考http://camnpr.com/archives/chrome-args-disable-web-security.html ,方法就是使用--disable-web-security 这个参数强行中止跨域安全检查,最后结果是一样的,但是安全性嘛,知乎用户很好的解答了这个问题http://www.zhihu.com/question/27817605 


推荐阅读:
  1. ajax跨域访问的方法有哪些
  2. 通过AJAX进行异步请求的方法

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

ajax 跨域 jsonp json s j

上一篇:elasticsearch6.5.0安装搭建以及kibana,cerebro,head,beat

下一篇:maven如何配置?(图解)

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》