zoukankan      html  css  js  c++  java
  • Spring MVC Rest 支持CORS

    新建cors filter文件,

    package cn.ac.iscas.pebble.ufe.tools;
    
    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 org.springframework.stereotype.Component;
    
    @Component
    public class SimpleCORSFilter implements Filter {
    
        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, OPTIONS, DELETE");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            chain.doFilter(req, res);
        }
    
        public void init(FilterConfig filterConfig) {}
    
        public void destroy() {}
    
    }
    然后在web.xml里添加如下内容:
    <filter>
            <filter-name>cors</filter-name>
            <filter-class>cn.ac.iscas.pebble.ufe.tools.SimpleCORSFilter</filter-class>
        </filter>
        
        <filter-mapping>
            <filter-name>cors</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>

    此为,在代码返回的地方,需要给response添加header,如下:

    response.addHeader("Access-Control-Allow-Origin", "*");
    至此即可访问:demo如下:

    <html>
    <head>
    </head>
    <body height="100%" width="100%">
    <table class="bordered" id="devicetable">
                    <thead>
                    <tr>
                        <th width="20%">check</th>
                        <th width="30%">DeviceID</th>        
                        <th width="50%">DeviceName</th>
                    </tr>
                    </thead>
                    <tbody />
                </table>
    
        
    <script type="text/javascript">
    
    var xmlhttp;
    
    if (window.XMLHttpRequest)
      {
        xmlhttp=new XMLHttpRequest();
      }
    else
      {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        xmlDoc = xmlhttp.responseXML;
        
        y=xmlDoc.getElementsByTagName("deviceid");
        x=xmlDoc.getElementsByTagName("devicename");
        
        for(i=0; i<x.length;i++)
        {
            var tr1=document.getElementById('devicetable').insertRow();
            var c0=tr1.insertCell(0);
            var c1=tr1.insertCell(1);
            var c2=tr1.insertCell(2);
            c0.innerHTML="<input type='checkbox' name='ck'/>";
            c1.innerHTML=y[i].firstChild.nodeValue;
            c2.innerHTML=x[i].firstChild.nodeValue;
        }
        
        }
      }
    xmlhttp.open("GET","http://localhost:8080/UFE/service/monitorydevice",true);
    xmlhttp.send();
    
    </script>
    </body>
    </html>

  • 相关阅读:
    javaweb地图定位demo
    java基础循环
    java实现时钟
    栈和队列
    线程池
    java死锁及解决方案
    克隆
    算法与数据结构基础一
    重定向与转发的区别
    省选模拟57
  • 原文地址:https://www.cnblogs.com/dorothychai/p/4106940.html
Copyright © 2011-2022 走看看