• 服务端解决跨域问题


    现在很多开发的API都支持ajax直接请求,这样就会导致跨域的问题,解决跨域的问题一方面可以从前端,另一方面就是服务器端。 
    既然是搞服务器端,做对外的API服务,当然是做到越简单越好,前端只需要傻傻的使用就好。

    如何让服务器本身支持跨域请求呢?

    创建一个Filter

    package com.iot.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;
    
    /**
     * @ClassName: CORSFilter 
     * @Description: 支持跨域过滤器
     * @author ZhangYong
     * @date 2018年1月17日 下午6:31:21
     */
    public class CORSFilter implements Filter{
    
    	@Override
    	public void init(FilterConfig filterConfig) throws ServletException {
    		
    	}
    
    	@Override
    	public void doFilter(ServletRequest req, ServletResponse res,
    			FilterChain chain) throws IOException, ServletException {
                HttpServletResponse response = (HttpServletResponse) res;  
                response.setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问的域,可以是通配符”*”;
                response.setHeader("Access-Control-Allow-Methods", "POST, GET");
                response.setHeader("Access-Control-Max-Age", "1800");
                response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
                response.setHeader("Access-Control-Allow-Credentials", "true");
                chain.doFilter(req, response);
    	}
    
    	@Override
    	public void destroy() {
    		
    	}
    
    }
    

      在web.xml文件中配置Filter

      <filter>
      	<filter-name>corsFilter</filter-name>
      	<filter-class>com.iot.common.filter.CORSFilter</filter-class>
      </filter>
      <filter-mapping>
        <filter-name>corsFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>
    

      

    需要注意的问题:

    当前台设置了 withCredentials = true ,那么后台Access-Control-Allow-Origin 为 *不可用,二者不能同时使用

  • 相关阅读:
    (重要)1
    大数据技术
    条件随机场之CRF++源码详解-预测
    条件随机场之CRF++源码详解-训练
    条件随机场之CRF++源码详解-特征
    条件随机场之CRF++源码详解-开篇
    这个更新需要花去 50.6 M 磁盘上总计 /boot 的空间。请在 7737k 磁盘上留出 /boot 空间。清空您的回收站和临时文件,用“sudo apt-get clean
    多线程:pthread_exit,pthread_join,pthread_self
    error: ‘for’ loop initial declarations are only allowed in
    多线程
  • 原文地址:https://www.cnblogs.com/zhangyongJava/p/8305630.html
Copyright © 2020-2023  润新知