java跨域获取来源信息

阅读: 评论:0

java跨域获取来源信息

java跨域获取来源信息

前端技术:axios

后端技术:java spring

问题:跨域问题

前后端分离第一个问题,活久见,也是预料之中,总是感觉跨域难。

第一想到的是后端进行设置,马上写了个过滤器CrossFilter

HttpServletRequest request = (HttpServletRequest) selvetRequest;

HttpServletResponse response = (HttpServletResponse) selvetResponse;

// 指定允许其他域名访问

response.setHeader("Access-Control-Allow-Origin", "*");

response.setHeader("Access-Control-Allow-Methods", "POST, GET");

response.setHeader("Access-Control-Max-Age", "3600");

response.setHeader("Access-Control-Allow-Headers", "Content-Type, X-Requested-With, Accept, Origin");

chain.doFilter(selvetRequest, selvetResponse);

设置了一堆的配置:

同时也找运维哥哥加了nginx配置:

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers *;

add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';

此时,前端小姐姐请求后出现了一个OPTIONS请求,然后无任何响应,

查看控制台发现有异常信息:

Access to XMLHttpRequest at '****' from origin 'localhost:9529' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The 'Access-Control-Allow-Origin' header contains multiple values '*, *', but only one is allowed.

说明:这个异常信息的原因就是配置了2个导致!去掉一个就行。所以我把代码里面的filter去掉了,保留了nginx配置

去掉后,新的问题又来了!

依然还是OPTIONS响应,并且返回403.

这个问题原因是因为服务器或者代码里没有对应的OPTIONS方法

可以直接在服务器nginx中设置返回就行:

if ($request_method = "OPTIONS") {

return 204;

}

此时服务器nginx的配置如下:

add_header Access-Control-Allow-Origin *;

add_header Access-Control-Allow-Headers *;

add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';

if ($request_method = "OPTIONS") {

return 204;

}

此时再次请求,OPTIONS响应200了,但是,response依然是空,仍然还是没进到后台方法!!!

绝望啊绝望!!

百无聊奈中,发现如下内容:

axios中POST请求变成OPTIONS处理

按照文中方式处理后,总算进请求地址有post响应啦!

但是!新的问题又出现了!

接口响应500~查看日志发现,解析参数失败了~

因为上文中用到:

qs.stringify

导致入参变成”xxx=111&yyy=222”这种格式,正准备改一下后台逻辑,针对性处理这种格式,

似乎又出现了新的转机~~~

这篇文章提到了一个关键性配置:

withCredentials: false, // 允许携带cookie

一通操作猛如虎,

加了以上配置后,

接口总算可以成功请求,并且参数解析也可以了。。

本文发布于:2024-02-03 08:17:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170691943149788.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:来源   信息   java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23