Ant design Pro 跨域问题解决方案(SpringBoot版本)

错误描述:

在这里插入图片描述

Access to fetch at ‘http://localhost:9000/api/login/account’ from origin ‘http://localhost:8000’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

解决方案:

在SpringBoot项目中添加以下两个文件WebMvcConfig,将代码直接复制粘贴进去即可。
笔者是新建了一个config包,在config包中新增了该文件,
截图如下:
在这里插入图片描述

CorsInterceptor.java

package com.example.demo.config;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @ClassName: CorsInterceptor
 * @Description: TODO
 * @Author: Shilin Wang
 * @Date: 2021/5/2 11:34
 * @Version: 1.0
 */
public class CorsInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        response.setHeader("Access-Control-Allow-Origin", request.getHeader("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,x-requested-with,Authorization,Content-Type,token");
        response.setHeader("Access-Control-Allow-Credentials", "true");
        return true;
    }
}

WebMvcConfig.java

package com.example.demo.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @ClassName: WebMvcConfig
 * @Description: TODO
 * @Author: Shilin Wang
 * @Date: 2021/5/2 11:36
 * @Version: 1.0
 */
@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

    @Bean
    public CorsInterceptor corsInterceptor() {
        CorsInterceptor corsInterceptor = new CorsInterceptor();
        return corsInterceptor;
    }

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(corsInterceptor())
                .addPathPatterns("/**");
    }

}

备注:

笔者第一次在解决加了允许跨域注解@CrossOrigin,但是问题依旧没有解决,做了如下的设置与修改,问题解决!欢迎大家讨论

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
是指在浏览器中,一个网页的脚本试图访问不同源(、协议、端口)的资源时产生的安全限制。浏览器为了保护用户信息安全,会阻止请求。 解决问题有多种方法,以下是一些常见的解决方案: 1. JSONP(仅支持GET请求):通过在页面中动态创建`<script>`标签,向目标服务器请求数据。服务器返回JSONP格式的数据,浏览器解析并执行回调函数。 2. CORS(资源共享):服务端设置响应头部,允许指定的源进行请求。在Spring Boot中,可以通过添加`@CrossOrigin`注解来实现。 3. 代理服务器:配置一个同源的代理服务器,将浏览器的请求转发到目标服务器,然后将响应返回给浏览器。这种方式需要在服务器端进行配置。 4. WebSocket:使用WebSocket协议进行通信,WebSocket不受同源策略限制。 对于Spring Boot应用解决问题,可以使用CORS方式。在控制器类或方法上添加`@CrossOrigin`注解即可实现请求的支持。例如: ```java @RestController @CrossOrigin(origins = "http://example.com") public class MyController { // ... } ``` 上述代码表示允许来自"http://example.com"请求。你可以根据实际情况修改`origins`参数,甚至使用`"*"`来允许所有来源的请求。 同时,你也可以在全局配置文件(如`application.properties`或`application.yml`)中添加以下配置来实现全局支持: ```yaml spring: cors: allowed-origins: http://example.com ``` 这样配置后,所有的请求都会允许来自"http://example.com"请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值