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>

时间: 2024-10-09 21:55:58

Spring MVC Rest 支持CORS的相关文章

Spring Boot全局支持CORS(跨源请求)

1 import org.springframework.context.annotation.Configuration; 2 import org.springframework.web.servlet.config.annotation.CorsRegistry; 3 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 4 5 /** 6 * @Author:CoderZZ 7

Spring MVC添加支持Http的delete、put请求!(HiddenHttpMethodFilter)

浏览器form表单只支持GET与POST请求,而DELETE.PUT等method并不支持,spring3.0添加了一个过滤器,可以将这些请求转换为标准的http方法,使得支持GET.POST.PUT与DELETE请求. 1.配置springmvc配置文件springmvc-servlet.xml<!-- 浏览器不支持put,delete等method,由该filter将/xxx?_method=delete转换为标准的http delete方法 -->  <filter>    

Spring MVC配置CORS(解决跨域请求)

1. CORS 简介 同源策略(same origin policy)是浏览器安全的基石.在同源策略的限制下,非同源的网站之间不能发送 ajax 请求的. 为了解决这个问题,w3c 提出了跨源资源共享,即 CORS(Cross-Origin Resource Sharing). CORS 做到了两点: 不破坏即有规则 服务器实现了 CORS 接口,就可以跨源通信 基于这两点,CORS 将请求分为两类:简单请求和非简单请求. 1.1 简单请求 可以先看下 CORS 出现前的情况:跨源时能够通过 s

Spring mvc 跨域问题解决

最近做一个微信小项目遇到一个跨域问题,就是我的前端和后端是放在不同的服务器上的,然后使用opst请求的时候 报错.之前我是没有了解过跨域这个问题的,然后我就上网去查了很多资料,看也很多人写的跨域的博客,然后完成了跨域的问题. 一.什么是跨域: 跨域是指 不同域名之间相互访问 例如 我的电脑上有2个服务器 192.168.0.11 192.168.0.12 如果第一个服务器上的页面要访问第二个服务器 就叫做跨域 或者http://www.baidu.com 要访问http://www.xxx.co

Spring MVC项目功能不完全指北

Spring MVC角色 Spring MVC是一款优秀的控制器框架,我们基于Servlet的思想基础,使用Spring MVC是一件比较简单的事情.只是Spring MVC会实现很多细节化的东西,使得开发的效率很高.Serlvet只是粗浅的处理了HTTP请求,其中并没有牵扯到复杂的需求定制.庆幸的是,Spring MVC实现了很多定制功能并且学习成本不高,而且开发效率大大提高了. 处理HTTP请求 如Servlet中存在doGet和doPost方法一样,如果把Spring MVC的方法声明为

关于Spring MVC的问题

一.SpringMVC的流程是什么? 1. 用户发送请求至前端控制器DispatcherServlet: 2. DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle: 3. 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有)一并返回给DispatcherServlet: 4. DispatcherServlet 调用 HandlerAdapter处理器适配器: 5. HandlerAdapter 经过适配

[转] 使用Spring MVC构建REST风格WEB应用

原文地址:http://fancy888.iteye.com/blog/1629120 对于运行在网络上的MIS系统而言,处理数据的是整个系统的主要任务,翻开程序我们可以看到,80%以上的代码都在处理数据的CRUD操作.采用一种什么样的框架结构,能够使得处理数据的操作变得简单且易理解,这是大部分开发者尤其是架构设计者一直以来思考的一个问题. REST(Representational State Transfer)是一种编程风格,特别是针对网络应用的设计和开发,采用REST可以显著降低开发的复杂

Spring MVC 快速入门-01

MVC介绍 MVC是什么 mvc是一种使用MVC(Model View Controller) 设计创建Web应用程序的模式 Model(模型) 表示程序核心计算 View(视图) 展示数据 Controller (控制器) 处理输入 常用的MVC框架 比较常用的MVC框架有Struts 和 Spring MVC Struts是java Web MVC框架中不争的王者.经过长达九年的发展,Struts已经逐渐成长为一个稳定.成熟的框架,并且占有了MVC框架中最大的市场份额.但是Struts某些技

struts2与spring mvc 的比较

1.传值: struts2通过set get来传值,而spring mvc 可以直接在方法里传值(String username,Model model)model也可以换成map来传值但不建义 model.addAttrubute("username",username),当然也可以直接写model.addAttribute(username),默认key是传值的值类string. model.addAttribute(new User()):key 就是User. 2.struts