跨域问题

Posted 772933011qq

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跨域问题相关的知识,希望对你有一定的参考价值。

 @Bean
    public WebFilter corsFilter() {
        return (ServerWebExchange ctx, WebFilterChain chain) -> {
            //获取web服务请求
            ServerHttpRequest request = ctx.getRequest();
            //判断是否跨域请求
            if (CorsUtils.isCorsRequest(request)) {
                //获取请求消息头
                HttpHeaders requestHeaders = request.getHeaders();
                //获取响应结果
                ServerHttpResponse response = ctx.getResponse();
                //获取请求头方法的权限
                HttpMethod requestMethod = requestHeaders.getAccessControlRequestMethod();
                //获取响应结果的头部信息
                HttpHeaders headers = response.getHeaders();
                //增加响应结果的头部信息设置源头
                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_ORIGIN, requestHeaders.getOrigin());
                //增加响应头部信息的权限
                headers.addAll(HttpHeaders.ACCESS_CONTROL_ALLOW_HEADERS, requestHeaders
                        .getAccessControlRequestHeaders());
                //判断获取到的请求权限是否为null
                if(requestMethod != null){
                    //增加头部信息的请求方法名称
                    headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_METHODS, requestMethod.name());
                }
                //增加头部信息的控制权限为true
                headers.add(HttpHeaders.ACCESS_CONTROL_ALLOW_CREDENTIALS, "true");
                //增加头部信息的暴露值
                headers.add(HttpHeaders.ACCESS_CONTROL_EXPOSE_HEADERS, "*");
                //增加头部信息的最大时期
                headers.add(HttpHeaders.ACCESS_CONTROL_MAX_AGE, MAX_AGE);
                //web请求的方法是否为options
                if (request.getMethod() == HttpMethod.OPTIONS) {
                    //响应的状态为OK
                    response.setStatusCode(HttpStatus.OK);
                    return Mono.empty();
                }
            }
            return chain.filter(ctx);
        };
    }

 

以上是关于跨域问题的主要内容,如果未能解决你的问题,请参考以下文章

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

解决跨域问题代码

跨域问题

PHP后台代码解决跨域问题

JAVA解决前端跨域问题。

PHP中运用jQuery的Ajax跨域调用实现代码