APPCAN开发中涉及到的跨域解决方案

来源:互联网 发布:javascript动态特效 编辑:程序博客网 时间:2024/06/10 09:59

方案一:采用JQUERY自带的callback方法

即在URL传参的时候传一个参数callback=?过去,在服务器端,获取callback参数的值,作为函数名,将需要返回的值作为函数参数,然后返回这段JavaScript代码。这种方法需要额外的对callback进行处理,当不需要跨域的时候,要么重写处理方法,要不把不跨域当跨域处理,个人不太喜欢这样做。


方案二:采用设置Header的方案

即设置允许跨域访问的域名,如:在Servlet中:response.setHeader("Access-Control-Allow-Origin","http://www.csdn.net");

但是,有时候我们采用集成了的框架开发,不需要写Servlet,这时可以在过滤器中设置,以下代码仅供参考:

package com.gotoip4.agripert2.common.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletException;import javax.servlet.ServletRequest;import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; public class ACAOFilter implements Filter {protected FilterConfig filterConfig = null;     public void destroy() {         this.filterConfig = null;    } public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse,            FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) servletResponse;response.setHeader("Access-Control-Allow-Origin","*");chain.doFilter(servletRequest, servletResponse);}public void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;  }}

在PHP中可以这样(仅供参考):

echo header("Access-Control-Allow-Origin:*");




原创粉丝点击