在进行前后端分离项目时,前后端跨域问题的报错:has been blocked by CORS policy: No ‘Access-Control-Allow-Origin‘

产生这个错误的原因:

1.前后端的域名不一致,会产生跨域问题

2.前后端的域名一样,但是端口不一样,也一样会产生跨域问题,比如:http://localhost:8081/http://localhost:8080/

解决方法:

方法一:在java添加配置类

其中AppConfig类的具体实现代码如下:

@Configuration
public class AppConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowCredentials(false)
                    .allowedMethods("POST","GET","DELETE","PUT","OPTIONS")
                    .allowedOrigins("*");
    }
}

 方法二:使用nginx反向代理

1.如果你电脑还没下载nginx,可以去nginx官网进行下载,nginx官网链接:nginx newsicon-default.png?t=N5K3https://nginx.org/

2.下载完之后,打开其目录为:

 

 

其中conf文件夹是配置包,mall是自己创建用来存储前端的文件夹

 3.打开conf文件夹,再打开nginx.conf文件,进行配置

 4.nginx.conf文件需要修改的代码

    server {
        listen       8080;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
           try_files $uri /login.html;
           root mall; ##修改为mall
	         index index.html index.htm home.html;
             proxy_pass http:localhost:8081;
        }
    }

其中 listen       8080;   server_name  localhost; 表示页面访问的地址是http://localhost:8080

try_files $uri /login.html;表示默认访问的页面是login.html这个页面

 root mall;表示前面第2步自己参加的用来存储前端的文件夹名字

proxy_pass http:localhost:8081;表示后端接口的地址

接着保存退出。

5.利用命令行运行nginx(要以管理员的身份运行)

 

在上面直接输入cmd进行打开命令行

 

 

 6.输入net start nginx启动nginx,输入net stop nginx停止nginx

net start nginx

 

net stop nginx

 总结:可以在Java使用配置类实现也可以使用nginx进行反向代理实现,你可以选择自己喜欢的方式实现噢~,有任何问题可以在评论区提出讨论噢~

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端跨域问题是指在浏览器中,当一个Web应用程序(Web page、Web API等)向另一个源(domain、protocol、port)发起请求,浏览器会根据同源策略(Same-Origin Policy)限制该请求。如果请求的目标与当前页面的源不同,则浏览器会阻止该请求,抛出“has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.”的错误信息。解决这个问题的方法有以下几种: 1. 服务器端设置响应头Access-Control-Allow-Origin,允许指定的源访问资源。例如,设置Access-Control-Allow-Origin: *,表示允许所有源访问资源。 ```javascript // 服务器端设置响应头 response.setHeader('Access-Control-Allow-Origin', '*'); ``` 2. 服务器端设置响应头Access-Control-Allow-Credentials,允许客户端发送包含凭据的请求。例如,设置Access-Control-Allow-Credentials: true,表示允许客户端发送包含凭据的请求。 ```javascript // 服务器端设置响应头 response.setHeader('Access-Control-Allow-Credentials', true); ``` 3. 服务器端设置响应头Access-Control-Allow-Methods,允许客户端使用的HTTP方法。例如,设置Access-Control-Allow-Methods: GET, POST,表示允许客户端使用GET和POST方法。 ```javascript // 服务器端设置响应头 response.setHeader('Access-Control-Allow-Methods', 'GET, POST'); ``` 4. 服务器端设置响应头Access-Control-Allow-Headers,允许客户端发送的请求头。例如,设置Access-Control-Allow-Headers: Content-Type,表示允许客户端发送Content-Type请求头。 ```javascript // 服务器端设置响应头 response.setHeader('Access-Control-Allow-Headers', 'Content-Type'); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值