java跨域问题Response to preflight request doesn‘t pass access control check: No ‘Access-Control-Allow-Or

这几天差点折在这个跨域上了
老是报这个错误
ps:图网上找的,反正就是跨不成功
网上的方法都快翻遍了,前端,后端,nginx配置都一个个试了,结果还是不行,就是老报请求头的域不在允许范围

前端:
前端
后端:
后端
nigix.config
在这里插入图片描述
查看请求发现option200预检请求都过不了,
没办法,后用笨方法在每个类入口都设置一个println方法看是哪一步卡住了,对,本人技术还不够牛能用debug追踪栈程序的运行,这个方法是目前费时间但比较可行的法子之一

这个过程中我发现CORS类方法都没有进去,根本不是配置的原因。

最后发现,我没加**@Configuration**注解!!!

晕死
在这里插入图片描述
加上问题就解决了

这里顺便说一下,
allowOrigin = “http://localhost:8080”; 代表后端所允许通过请求的域,一般在请求头携带该请求所来自的域

allowMethods = “GET,POST,PUT,DELETE,OPTIONS”; 代表允许请求的方法

allowCredentials = “true”; 代表是否运许携带cookie

allowHeaders = “Authorization,content-type,Access-Control-Allow-Origin”;代表允许的请求头的类型

exposeHeaders = “”; 代表让前端获取后端的响应头

最后再调用response.setHeader()方法将参数封装到响应头中

nginx.config配置中

server {
        listen       8888;   //监听的端口,启动时将占用此端口
        server_name  localhost;  //运行的主机名(域)
        location /api {  //表示只匹配向接口/api转发发送的请求
			proxy_pass http://localhost:8081;  //表示nginx代理前端转发的目的域
        }

如前端域为 http://localhost:8080
后端为http://localhost:8081

前端发送一个get请求到http://localhost:8888/api/test,也就是nginx代理的域,nginx会代替8080访问8081/api/test,得到返回后,前端再收到从8888返回的json数据
对于前端,它面对的是 http://localhost:8888
对于后端,它收到请求的域依然是 http://localhost:8080

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值