js,css跨域请求

     这次在用cdn的时候终于还是遇到了跨域请求

      索性百度了下  基本方法就是定义一个filter,在每次请求的时候header 头部加一个allow的东西

     具体代码如下

package com.web.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;  
  
import com.common.dict.Constant2;  
  
import oa.service.DictionaryParam;  
  
public class SimpleCORSFilter implements Filter{  
  
    @Override  
    public void destroy() {  
          
    }  
  
    @Override  
    public void doFilter(ServletRequest req, ServletResponse res,  
            FilterChain chain) throws IOException, ServletException {  
            HttpServletResponse response = (HttpServletResponse) res;  
            response.setHeader("Access-Control-Allow-Origin", DictionaryParam.get(Constant2.DICTIONARY_GROUP_GLOBAL_SETTING, "AccessControlAllowOrigin"));  
            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");  
            chain.doFilter(req, res);  
          
    }  
  
    @Override  
    public void init(FilterConfig arg0) throws ServletException {  
          
    }  
  
}

 然后在web.xml配置

<filter>  
      <filter-name>cors</filter-name>  
      <filter-class>com.web.filter.SimpleCORSFilter</filter-class>  
    </filter>  
    <filter-mapping>  
      <filter-name>cors</filter-name>  
      <url-pattern>/*</url-pattern>  
    </filter-mapping>

基本的思路就是在你的interceptor中    拦截  然后也在session中放入 cdn的请求路径,在页面的引js,css样式的时候 前加上这个头部

还有一个比较坑的地方 就是在你如果js中 自定义了一些js的延伸方法,需在页面最开始的地方就引入jquery

否则会报一些js的错误,类似方法找不到等等,但在本地是可行的

另外因为我们是在内网开发,这时候我们模拟了一个cdn

在另一台服务器上,将图片,js文件部署上去,

记住在里面也放一个web.xml,把一些跨域的请求配置 也加上去,才可以让服务器访问你,因为你对于它那边来讲  也算是跨域

如果正式的话   在阿里云oss云存储   bucket 配置   cros的请求域名就可

相关推荐