一、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"); } }
?
?
然后在把这个拦截器加入到配置文件里面
?
<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跨域调用restful webservice几种方式及webservice中文乱码问题
原文:http://qll3609120.iteye.com/blog/2241366