CROS跨域配置异常

简介: 这是一个CORS跨域问题案例,前端(localhost:8080)尝试访问后端(localhost:9999)被阻止。后端已配置CORS过滤器,但`addAllowedOrigin`错误地设为`http://localhost:9999`。正确配置应为`http://localhost:8080`以允许前端请求。
Access to XMLHttpRequest at 'http://127.0.0.1:9999/login?username=1634856201@qq.com&password=wcl123456' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Login_Form.vue:97 
POST http://127.0.0.1:9999/login?username=1634856201@qq.com&password=wcl123456 net::ERR_FAILED 403 (Forbidden)

这是一个典型的CORS(跨源资源共享)问题,也就是说浏览器阻止了从 http://localhost:8080 发起到 http://127.0.0.1:9999/login 的请求。

首先我的后端部署IP端口为:localhost:9999

            前端部署IP端口为:localhost:8080

并且我在后端是有对跨域进行配置的:

/**
     * 创建并配置CORS过滤器,以允许来自指定来源的跨域请求。
     * 这个方法设置了过滤器的配置,包括允许的来源、请求头、请求方法和凭证。
     *
     * @return CorsFilter 返回配置好的CORS过滤器实例。
     */
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration config = new CorsConfiguration();

        // 设置允许的来源为http://localhost:9999
        config.addAllowedOrigin("http://localhost:9999");

        // 设置允许所有的请求头
        config.addAllowedHeader("*");
        // 设置允许所有的请求方法
        config.addAllowedMethod("*");
        // 允许请求携带凭证(如cookies)
        config.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        // 将CORS配置应用到所有路径
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

最后发现我的问题是出现在该行代码如下:

// 设置允许的来源为http://localhost:9999
config.addAllowedOrigin("http://localhost:9999");

这行代码的真实意思是配置允许接收处理哪一个IP端口发送过来的请求,而我的前端部署IP端口为localhost:8080,所以正确的配置应该是:

// 设置允许的来源为http://localhost:8080
config.addAllowedOrigin("http://localhost:8080");

这样的话就可以解决前端在localhost:8080端口发送请求给后端,后端在localhost:9999端口接收该跨域请求了。

相关文章
|
监控 安全 Java
【JavaWeb】 三大组件之过滤器 Filter
过滤器(Filter)是Java Web应用中的一种组件,它在请求到达Servlet或JSP之前或者响应送回客户端之前,对请求和响应进行预处理和后处理操作。通过使用过滤器,可以对请求进行过滤,拦截请求,修改请求参数,在请求被处理之前进行一些预处理操作;同时也可以对响应进行过滤,对响应内容进行修改,添加一些额外的处理。
|
JavaScript 对象存储
JS - 阿里云 OSS 文件下载通用办法(支持跨域)
JS - 阿里云 OSS 文件下载通用办法(支持跨域)
4839 0
JS - 阿里云 OSS 文件下载通用办法(支持跨域)
|
存储 Ubuntu 网络协议
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问(上)
NAS个人云存储 - 手把手教你搭建Nextcloud个人云盘并实现公网远程访问
|
运维 Kubernetes Cloud Native
【云原生-DevOps】企业级DevOps平台搭建及技术选型-CICD篇(一)
【云原生-DevOps】企业级DevOps平台搭建及技术选型-CICD篇(一)
1608 0
【云原生-DevOps】企业级DevOps平台搭建及技术选型-CICD篇(一)
|
安全 前端开发 Java
解决Spring Boot中的跨域请求问题
解决Spring Boot中的跨域请求问题
|
移动开发 资源调度 JavaScript
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
这篇文章介绍了在Vue移动端网页中使用`pdfh5`和`vue-pdf`两个插件来实现PDF文件的预览,包括滚动查看、缩放、添加水印、分页加载、跳转指定页数等功能。
9141 1
Vue移动端网页(H5)预览pdf文件(pdfh5和vue-pdf)
|
JSON 缓存 安全
SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析
SpringBoot 配置CORS处理前后端分离跨域配置无效问题解析
|
前端开发 UED
前端拿到后端接口字段为null时,一行代码为你解决
我们可以看到有三个字段为 null ,我们前端要拿字段渲染到页面不可能把null 渲染出去
954 0
|
PHP 计算机视觉
php结合imagick 修改图片的DPI,达到与ps类似的效果
php结合imagick 修改图片的DPI,达到与ps类似的效果
512 1