跨域问题
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(代码片段