一、ajax跨域调用restful webservice
1)jsonp的方式。略
2)配置拦截器,设置允许那些origin可以发起跨域请求,具体代码:
public class TestInterceptor extends AbstractPhaseInterceptor<Message> { public TestInterceptor() { super(Phase.RECEIVE); } public TestInterceptor(String phase) { super(phase); } @Override public void handleMessage(Message message) throws Fault { if (message.getDestination() != null) { System.out.println(message.getId() + "#" + message.getDestination().getMessageObserver()); } if (message.getExchange() != null) { System.out.println(message.getExchange().getInMessage() + "#" + message.getExchange().getInFaultMessage()); System.out.println(message.getExchange().getOutMessage() + "#" + message.getExchange().getOutFaultMessage()); } HttpServletRequest request = (HttpServletRequest) message.get( AbstractHTTPDestination.HTTP_REQUEST);//这句可以获取到request HttpServletResponse response = (HttpServletResponse) message.get( AbstractHTTPDestination.HTTP_RESPONSE);//这句可以获取到request response.setCharacterEncoding("UTF-8"); response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "x-requested-with"); } }
- Access-Control-Allow-Origin 为允许哪些Origin发起跨域请求. 这里设置为"*"表示允许所有。
- Access-Control-Allow-Methods 为允许请求的方法.
- Access-Control-Max-Age 表明在多少秒内,不需要再发送预检验请求,可以缓存该结果
- Access-Control-Allow-Headers 表明它允许跨域请求包含content-type头,这里设置的x-requested-with ,表示ajax请求
然后在把这个拦截器加入到配置文件里面
<bean id="testServiceInterceptor" class="com.fpi.prd.test.util.TestInterceptor" /> <bean id="service" class="com.fpi.prd.test.service.Impl.UserRestFulServiceImpl" /> <jaxrs:server id="testServiceContainer" address="/test"> <jaxrs:serviceBeans> <ref bean="service" /> </jaxrs:serviceBeans> <jaxrs:providers> <bean class="com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider"/> </jaxrs:providers> <jaxrs:inInterceptors> <ref bean="testServiceInterceptor" /> </jaxrs:inInterceptors> <jaxrs:extensionMappings> <entry key="json" value="application/json" /> <entry key="xml" value="application/xml" /> </jaxrs:extensionMappings> <jaxrs:languageMappings> <entry key="en" value="en-gb"/> </jaxrs:languageMappings> </jaxrs:server>
二、请求webservice时候,返回的数据出现中文乱码问题,我们同样可以在拦截器里面配置
response.setCharacterEncoding("UTF-8");
相关推荐
ajax跨域请求调用webservice接口+视频教程,上次的不带视频教程,这次带一个视频教程,一个流程下来,想学不会都很难!
ajax跨域调用wcf实例
主要介绍了 ajax跨域调用webservice服务例子和理解,最近ajax访问webservice遇到跨域的问题,网上搜索资料,总结如下
摘要:Ajax 在 Web 2.0 时代起着非常重要的作用,然而有时因为同源策略 (SOP)(俗称:跨域问题(cross domain)) 它的作用会受到限制。在本文中,将学习如何克服合作限制。本文以asmx方式搭建webservice作为测试用...
ajax跨域请求WebService.asmx,程序非常完美的跑起来了。辛苦了一下午整理出来的。怕的就是以后自己忘记了。
jquery跨域调用webservice,采用jsonp,在webservice返回端采用HttpContext.Current.Response.Write返回json格式。,回调函数返回执行结果。
ajax跨域调用webservice实现文件上传,项目使用vs2019创建,请示用vs2019以上版本工具进行打开。
jquery跨域调用,js跨域调用,jsonp,跨域调用
解决ajax跨域问题
说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理...
Ajax跨域问题及其解决方案.docx
一个c# ajax跨域的demo,解决c# ajax 跨域的问题
实现WCF同时支持SOAP和AJAX跨域调用(支持代理启动) 1、基于WCF框架对REST架构的WEB(支持SOAP)服务实现; 2、支持javascript的多种方式跨域访问(GET/POST/PUT/DELETE); 3、解决服务调用参数传递的动态设计...
可以将book.aa.com用iframe添加到 www.aa.com的某个页面下,在www.aa.com和iframe里面都加上document.domain = "aa.com",这样就可以统一域了,可以实现...就和平时同一个域中镶嵌iframe一样,直接调用里面的JS就可以了
怎样实现Ajax 跨域访问的五种方法, 怎样实现Ajax 跨域访问的五种方法
eclipse环境下集成flex之后调用webservice的相关资源
ajax跨域
本资源主要介绍了AJAX跨域的解决办法,以及解决方案间的比较
什么是跨域,跨域出现的场景,模拟跨域,springmvc下解决跨域,springboot下解决跨域。绝对原创。