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端口接收该跨域请求了。

相关文章
|
8天前
|
安全 前端开发 应用服务中间件
配置反向代理时如何处理跨域请求?
配置反向代理时如何处理跨域请求?
40 9
|
应用服务中间件 Nacos nginx
跨域配置
跨域配置
480 0
跨域配置
|
9天前
|
开发框架 中间件 Java
如何处理跨域资源共享(CORS)的 OPTIONS 请求?
处理 CORS 的 OPTIONS 请求的关键是正确设置响应头,以告知浏览器是否允许跨域请求以及允许的具体条件。根据所使用的服务器端技术和框架,可以选择相应的方法来实现对 OPTIONS 请求的处理,从而确保跨域资源共享的正常进行。
|
1月前
|
安全 前端开发 JavaScript
什么是跨域?为什么会产生跨域?怎么解决跨域?
什么是跨域?为什么会产生跨域?怎么解决跨域?
222 0
|
移动开发 JSON 数据格式
解决跨域的方法
解决跨域的方法
64 0
|
JavaScript 前端开发 中间件
解决跨域的九种方法
跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实施的安全限制。
551 0
解决跨域的九种方法
|
JSON 缓存 安全
跨域时怎么处理 cookie?
跨域时怎么处理 cookie?
|
安全 JavaScript 前端开发
什么是跨域,如何解决跨域?
还在等什么,快来一起讨论关注吧,公众号【八点半技术站】,欢迎加入社群
什么是跨域,如何解决跨域?
跨域配置类
跨域配置类
97 0
|
Web App开发 JavaScript 前端开发
【跨域】一篇文章彻底解决跨域设置cookie问题!
之前做项目的时候发现后端传过来的 SetCookie 不能正常在浏览器中使用。是因为谷歌浏览器新版本Chrome 80将Cookie的SameSite属性默认值由None变为Lax。接下来带大家解决该问题。
3226 0