首页 > 代码库 > Spring MVC Rest 支持CORS

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;@Componentpublic 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>

Spring MVC Rest 支持CORS