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请求

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

  • 相关阅读:
    聊聊自动化的打开方式
    浅谈如何提高自动化测试的稳定性和可维护性 (pytest&allure)
    Jmeter做压力测试的心得
    为什么测试人员必须掌握Linux?
    数据结构与算法系列 目录
    高可用高性能分布式文件系统FastDFS进阶keepalived+nginx对多tracker进行高可用热备
    Fastdfs文件系统扩容
    Linux下FastDFS分布式存储-总结及部署记录
    How to setup a Alpine Linux mirror
    修改内核参数开启转发
  • 原文地址:https://www.cnblogs.com/hupengcool/p/3934861.html
Copyright © 2011-2022 走看看