Ajax跨域访问SSH action问题
来源:互联网 发布:win7显示网络连接图标 编辑:程序博客网 时间:2024/06/16 00:47
最近在完善实验室的一体化系统项目,到最后的整合调用算法模型,因为时间紧迫,就选择了远程调用原SSH项目中的已有action处理请求,也涉及到了跨域问题,没有系统的解决过,所以此次查询解决过程也是一个很好的学习经历。Ajax跨域一般使用的方法有:
- 通过Flash插件发送HTTP请求,这种方式可以绕过浏览器的安全限制,但必须安装Flash插件,并与它进行一定的交互,使用较少。
- 通过在同源域名下架设一个代理服务器来转发,JS负责把请求发送到代理服务器上
- JSONP 主要用于主流浏览器的跨域数据访问问题
- CORS 跨域资源共享,是一种允许当前域的资源被其他域的脚本请求访问机制,如果浏览器支持HTML5,那么就可以一劳永逸的使用新的策略:CORS进行跨域,服务器端对CORS的支持主要是通过设置Access-Control-Allow-Origin来进行的。
这里只是简单阐述了几种常见的跨域方法,在这里主要讨论的是JSONP进行跨域。
<script language="javascript"> $(document).ready(function () { $("#button").click(function () { var user = $("#User").val(); var password = $("#Password").val(); $.ajax({ url: "http://ip:8080/Test/ajax_json/jiadan.action", asynnc:false, cache:false, data: { 'User' : user, 'Password' : password }, dataType: 'jsonp', jsonp:"callback", type: 'post', success: function (data) { alert("成功"); console.log(data); }, error:function(data){ alert("错误"); console.log(data); } }); }); }); </script>访问的是SSH项目中的struts,在struts中设置
<package name="ajax_json" extends="json-default">
<action name="jiadan" class="modelsave" method="text"><result name="success" type="json">
<param name="root">results</param>
<param name="callbackParameter">callback</param></result>
</action>
</package>
param设置的是返回参数,在action类中必须有set、get方法,callback是回调函数名称,否则前端接收到的都是error信息,不会进入success,callback可以不赋予回调函数名称,当然也可以自定义函数名称
jsonpCallback:'jsonpCallback'
前端接收到的data就是param设置的results
ps:默认设置下ajax的请求均为异步请求,如果将async设置为false,请求为同步请求,浏览器将会锁住,执行完一个请求才会执行下一个请求。
其实还可以采用一种方法,在action中设置response头部的值为:
HttpServletResponse response = ServletActionContext.getResponse();
response.setContentType("text/html;charset=UTF-8");
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Origin", "*");
前端可以不使用jsonp进行跨域,不过这种方法不安全,不建议使用。
阅读全文
0 0
- Ajax跨域访问SSH action问题
- ajax 跨域访问问题
- ajax 跨域访问 问题!
- AJAX跨域访问问题
- Ajax跨域访问问题
- ajax 跨域访问问题
- SSH Ajax Action 不能接收返回数据的问题
- 解决AJAX跨域访问的问题
- ajax跨域访问的问题
- ajax实现跨域访问的问题
- JSONP解决ajax跨域访问问题
- jquery ajax 解决跨域访问问题
- 解决ajax跨域访问的问题
- 解决Ajax(jsonp)跨域访问问题
- CORS解决ajax跨域访问问题
- Jquery ajax跨域访问的问题
- ssh2之ajax访问action
- ajax访问action返回视图
- 能够提升你逼格和 Level 的开源库
- Spark性能调优之合理设置并行度
- 深入了解toFixed()和Math.round()
- 计算圆和长方形的面积
- 解决导入项目时找不到对应主题style
- Ajax跨域访问SSH action问题
- 加载类的三种方式详解
- 暗黑字符串
- Asp.net core应用在 Kubernetes上内存使用率过高问题分析
- 大家好
- com.android.dex.DexIndexOverflowException: Cannot merge new index 68257 into a non-jumbo instruction
- Microsoft的现代数据管理
- TFS在项目中Devops落地进程(上)
- 私有云落地解决方案之网络篇-关键技术-GRE