zoukankan      html  css  js  c++  java
  • javascript跨域请求RESTful Web Service

    跨域请求RESTful Web Service


    当我们用js请求RESTful Web Service的时候,通常会出现跨域无法访问的问题,也就是无法正常得到我们要的值。jsonp是个解决问题的方法。但是,我们希望访问RESTful Web Service就像一般的ajax方法一样,不用每个都去搞一个jsonp和callback。这就需要我们在服务端进行一些设置,下面我用一个简单的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 org.springframework.stereotype.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() {}
    
    }   
    
    

    Note:

    • Access-Control-Allow-Origin 为允许哪些Origin发起跨域请求. 这里设置为"*"表示允许所有,通常设置为所有并不安全,最好指定一下。
    • Access-Control-Allow-Methods 为允许请求的方法.
    • Access-Control-Max-Age 表明在多少秒内,不需要再发送预检验请求,可以缓存该结果
    • Access-Control-Allow-Headers 表明它允许跨域请求包含content-type头,这里设置的x-requested-with ,表示ajax请求

    如果大家有什么更好的方法,求指点

  • 相关阅读:
    通俗理解乐观锁和悲观锁
    面试系列-HashMap和Hashtable的区别
    单点登录原理与实现
    CodeReview常见代码问题
    漫画:什么是冒泡排序?
    Redis 和 Memcached 的区别
    动态图文了解 8 大排序算法
    分布式系统常见的事务处理机制
    面试系列-String,StringBuffer,StringBuilder三者区别
    面试系列-高并发之synchronized
  • 原文地址:https://www.cnblogs.com/hupengcool/p/3934861.html
Copyright © 2011-2022 走看看