跨域问题403/Network Error

1 什么是跨域

1.1 问题出现

403/Network Error
出现跨域问题

1.2 跨域分析

网址url组成
协议://域名:port/uri
协议:HTTP/HTTPS
域名:由一串字符+域名后缀组成
port:端口号,定位服务器
uri:资源路径

跨域,顾名思义,即跨域名访问。
跨域的几种情况:

  • 域名不同
    www.baidu.com 与 www.csdn.com
  • 域名相同,端口号不同
    www.baidu.com:1001www.baidu.com:1030
  • 二级域名不同
    pan.baidu.com 与 zhidao.baidu.com

其中,域名和端口都相同,但是请求路径不同,****属于跨域,如:

www.jd.com/item

www.jd.com/goods

跨域并不一定就有跨域问题,跨域问题是浏览器针对Ajax请求的一种安全限制。
即:

一个页面发起的ajax请求,只能适用于当前页同域名的路径,能有效的阻止跨站攻击。

2 解决办法

解决方案有很多,比如:JsonP、nginx反向代理(部署)、CORS等,我这儿采用CORS方案解决。

CORS:W3C标准,跨域资源共享(Cross-origin resource sharing)

SpringMVC在底层已经帮我们实现了CORS的跨域原理,并提供了相应的跨域过滤器:CorsFilter。

/**
 * 解决跨域问题
 */

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;

@Configuration
public class GlobalCorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        //1.添加CORS配置信息
        CorsConfiguration config = new CorsConfiguration();
        //1) 允许的域,不要写*,否则cookie就无法使用了
        config.addAllowedOrigin("http://127.0.0.1:8080");
        //2) 是否发送Cookie信息
        config.setAllowCredentials(true);
        //3) 允许的请求方式
        config.addAllowedMethod("OPTIONS");
        config.addAllowedMethod("HEAD");
        config.addAllowedMethod("GET");
        config.addAllowedMethod("PUT");
        config.addAllowedMethod("POST");
        config.addAllowedMethod("DELETE");
        config.addAllowedMethod("PATCH");
        // 4)允许的头信息
        config.addAllowedHeader("*");
        //2.添加映射路径,我们拦截一切请求
        UrlBasedCorsConfigurationSource configSource = new
                UrlBasedCorsConfigurationSource();
        configSource.registerCorsConfiguration("/**", config);
        //3.返回新的CorsFilter.
        return new CorsFilter(configSource);
    }
}
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]和\[2\]提供了关于axios请求时出现网络错误的错误信息和可能的原因。根据这些信息,可能的原因一可能是问题,而解决方案可能是配置后端服务器允许请求。另一个可能的原因是网络连接问题,解决方案可能是检查网络连接是否正常。引用\[3\]提供了一个具体的请求场景,其中涉及到报错。根据这个场景,可以推测问题可能是由于请求导致的。为了解决这个问题,你可以尝试在后端服务器上配置允许请求的设置。这样,前端页面就可以正常发送请求了。 #### 引用[.reference_title] - *1* *2* [techQ&A · Vue项目axios请求时报错Network Error at createError at XMLHttpRequest.handleError](https://blog.csdn.net/qq_41113339/article/details/120439955)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue2 问题报错AxiosError net::ERR_FAILED、 Network Error、ERR_NETWORK](https://blog.csdn.net/weixin_41662255/article/details/126512263)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值