Spring Cloud 项目出现 Options Forbidden 403 问题解决
来源:互联网 发布:姜海seo 编辑:程序博客网 时间:2024/06/14 18:29
个人博客原文:Spring Cloud 项目出现 Options Forbidden 403 问题解决
摘要:本文简述了博主在开发过程中,需要跨域调试的时候,出现了 OPTIONS 请求 Forbidden 的问题,以及解决方法。
问题
在使用 Spring Cloud 的项目中,本地跨域调试发现 POST 请求转为了 OPTIONS 请求,并且服务端拒绝访问,其实是 CORS 请求的问题。
CORS 请求分为2类: 简单请求 和 非简单请求。两者主要的区分点在于:
* 1: 请求方法为 HEAD, GET, POST;
* 2: HTTP 头信息为以下几个: Accept, Accept-Language,Content-Language, Last-Event-ID,Content-Type (值为 application/x-www-form-urlencoded、multipart/form-data、text/plain)。
只要满足以上两点,则为简单请求;否则为非简单请求。
简单请求的处理方式是浏览器直接发送 CORS 请求。非简单请求的处理方式是浏览器发送预检请求,表示询问服务器当前的域名是否可以访问正常服务器,如果可以访问,则发送正常的请求到服务器;否则报错。
现在确定遇到的问题就是在 CORS 请求预检的时候发现域名不在服务器端的白名单里面,所以需要修改服务端的请求返回报文。
解决方案
在网关中添加下面的过滤器,在每次请求返回报文中添加报文头,即可正常访问
@Componentpublic class CorsFilter implements Filter { @Override public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException { HttpServletResponse response = (HttpServletResponse) res; response.setHeader("Access-Control-Allow-Origin", "*"); response.setHeader("Access-Control-Allow-Methods", "POST, GET, PUT, OPTIONS, DELETE, PATCH"); response.setHeader("Access-Control-Max-Age", "3600"); response.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); response.setHeader("Access-Control-Expose-Headers", "Location"); chain.doFilter(req, res); } @Override public void init(FilterConfig filterConfig) {} @Override public void destroy() {}}
参考文章:
跨域资源共享 CORS 详解
阅读全文
0 0
- Spring Cloud 项目出现 Options Forbidden 403 问题解决
- svn: OPTIONS of '/svn/repos': 403 Forbidden
- 网站出现403 Forbidden
- Spring Cloud 子项目
- nginx出现403 Forbidden解决方法
- nginx 出现403 Forbidden 解决方法
- Wordpress出现403 Forbidden错误
- Mac MAMP 安装 tp5 出现 apache Directory index forbidden by Options directive 错误解决方法
- Spring Cloud 父项目建立
- docker部署spring cloud项目
- 加载已有项目出现 http/1.1 403 access forbidden 错误
- 加载已有项目出现 http/1.1 403 access forbidden 错误
- nginx出现403 forbidden的错误
- IOS使用Oauth出现forbidden 403
- nginx favicon.ico 出现403 forbidden
- Nginx 出现 403 Forbidden 的解决办法
- centos7 下 phpmyadmin 出现403 forbidden解决方案
- Nginx 出现 403 Forbidden 的解决办法
- 最小生成树
- 背包问题
- C++ 连接 mariadb
- 【Kafka源码】日志处理
- UpdateLayeredWindow返回317错误的原因
- Spring Cloud 项目出现 Options Forbidden 403 问题解决
- AndroidN SystemUI新增小图标
- Codeforces Round #399 D-Jon and Orbs(概率DP)
- 文章标题
- 《Python学习手册》学习笔记(24)之第24章高级模块话题(关键词:编程语言/Python/模块/模块设计理念)
- 基于Hexo+Github构建个人博客(二)
- ftp服务的搭建
- 预测算法——指数平滑法
- ubuntu 14.04.5LTS 64位版本安装花生壳