DubboxRest跨域问题解决:
a、ajax请求参数中,json格式需要标准格式,手动拼接引号
var data = "{\"title\":\""+title+
"\",\"context\":\""+context+
"\",\"actionType\":"+actionType+
",\"notifyType\":"+notifyType+
",\"sendType\":"+sendType+
",\"startTime\":\""+startTime+
"\",\"endTime\":\""+endTime+
"\",\"activeStartTime\":\""+activeStime+
"\",\"activeEndTime\":\""+activeEtime+
"\",\"weeks\":["+weeks+
"],\"time\":\""+time+
"\",\"fromType\":0}";
public class ControllFilter implements ContainerResponseFilter {
public void filter(ContainerRequestContext containerRequestContext, ContainerResponseContext containerResponseContext) throws IOException {
if (containerRequestContext.getMethod().equals("OPTIONS")) {
containerResponseContext.getHeaders().add("Access-Control-Allow-Origin", "*");
containerResponseContext.getHeaders().add("Access-Control-Allow-Headers", "Content-Type,x-requested-with,Authorization,Access-Control-Allow-Origin");
containerResponseContext.getHeaders().add("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
containerResponseContext.getHeaders().add("Access-Control-Max-Age" ,"360");
}
}
}
c、xml修改
<dubbo:protocol name="rest" port="8828" threads="500" contextpath="services" extension="com.xxx.xxx.filter.ControllFilter" server="tomcat" accepts="500"/>
c、实现代码方法中给Response添加跨域代码
public AddDictResponse addDict(AddDictRequest request) {
AddDictResponse response = new AddDictResponse();
try {
}catch (Exception ex){
response.setStatusCode(ErrorCodeEnm.FAIL.getCode());
response.setDescription(ErrorCodeEnm.SYS_ERROR.getCodeMsg());
}finally {
if (RpcContext.getContext().getResponse(HttpServletResponse.class) != null) {
RpcContext.getContext().getResponse(HttpServletResponse.class).addHeader("Access-Control-Allow-Origin","*");
}
}
return response;
}