这次在用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的请求域名就可