美文网首页
解决跨域的几种方式

解决跨域的几种方式

作者: holyABCD | 来源:发表于2018-03-30 11:03 被阅读0次
nginx

在location拦截目录下,处理options信令

 if ($request_method = 'OPTIONS') {
                        add_header 'Access-Control-Allow-Origin' '*';
                        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, DELETE, PUT';
                        add_header 'Access-Control-Allow-Headers' 'origin, content-type, accept, authorization,key,mobile,token,clienttype,version,Content-Type,if-none-match,x-3gpp-intended-identity';
                        add_header 'Content-Length' 0;
                        return 204;
                }
 }
服务端

拦截options请求,返回一系列Access-*

public abstract class PublicServlet extends HttpServlet {
    private static final Logger LOGGER = LoggerFactory.getLogger(PublicServlet.class);

    public void process(HttpServletContext ctx) throws Exception {
        HttpServletRequest request = ctx.getRequest();
        LOGGER.info("req url is {}", request.getRequestURL());
        HttpServletResponse response = ctx.getResponse();
        response.setHeader("Access-Control-Allow-Origin", "*");

        String method = request.getMethod().toLowerCase();
        switch (method) {
            case "post":
                doPost(request, response);
                break;
            case "get":
                doGet(request, response);
                break;
            case "delete":
                doDelete(request, response);
                break;
            case "put":
                doPut(request, response);
                break;
            case "options":
                doOptions(request, response);
                break;
            default:
                break;
        }
    }

    @Override
    protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doOptions(req, resp);
        resp.setHeader("Access-Control-Allow-Origin", "*");
        resp.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
        resp.setHeader("Access-Control-Allow-Headers", req.getHeader("access-control-request-headers"));
    }

相关文章

  • SpringBoot 实现前后端分离的跨域访问(CORS)

    springBoot小白写博客时遇到了跨域问题,顺便记录一下踩过的坑 springboot解决跨域的几种方式 方式...

  • 跨域 & 跨域的几种解决方式

    什么是跨域 跨域是由于浏览器同源策略的限制,它是对 JavaScript 的限制。浏览器不允许执行其他网站的脚本 ...

  • Ajax 请求和跨域

    跨域的几种方式: cors方式 cross-orign-resource-shareing(跨域)参考:http:...

  • 跨域的解决方式

    跨域有很多种方式,下面就简单说说跨域最常见的几种解决方式1、JSONPJSONP是服务器与客户端跨源通信的常用方法...

  • #hello,JS:15 同源策略 & 跨域(JSONP)

    跨域有几种常见的方式?你有没有跨域使用的经验? 方式: 使用jsonp实现跨域?使用cors实现跨域?浏览器另类的...

  • 基于nodejs的跨域代理

    对于前端开发的童鞋,如果涉及到和后端协同开发,有可能会碰到跨域的问题,对于解决跨域的问题,目前有几种解决方式,例如...

  • web跨域解决方案

    围绕以下几点介绍: 什么是跨域? 常用的几种跨域处理方法? crossdomain.xml解决跨域问题 什么是跨域...

  • 解决跨域的几种方式

    nginx 在location拦截目录下,处理options信令 服务端 拦截options请求,返回一系列Acc...

  • 几种跨域的解决方式

    jsonp http://js.jirengu.com/cenuxecevi/2/edit CORS http:/...

  • 跨域的几种解决方式

    什么是跨域? 页面向一个与当前域名不同的页面或服务器发送请求的行为。 什么叫域名不同? 两个url的协议、域名或者...

网友评论

      本文标题:解决跨域的几种方式

      本文链接:https://www.haomeiwen.com/subject/emgbcftx.html