服务器之家

服务器之家 > 正文

Spring Cloud出现Options Forbidden 403问题解决方法

时间:2021-01-31 17:14     来源/作者:1csh1

摘要:本文简述了博主在开发过程中,需要跨域调试的时候,出现了 options 请求 forbidden 的问题,以及解决方法。

403 forbidden 解释:

forbidden
you don't have permission to access / on this server.
additionally, a 500 internal server error error was encountered while trying to use an errordocument to handle the request.

403 forbidden 是http协议中的一个状态码(status code)。可以简单的理解为没有权限访问此站点。

问题

Spring Cloud出现Options Forbidden 403问题解决方法

在使用 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 请求预检的时候发现域名不在服务器端的白名单里面,所以需要修改服务端的请求返回报文。

解决方案

在网关中添加下面的过滤器,在每次请求返回报文中添加报文头,即可正常访问

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@component
public 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 详解

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:http://1csh1.github.io/2017/11/06/spring-cloud-options-forbidden/

相关文章

热门资讯

2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全
2020微信伤感网名听哭了 让对方看到心疼的伤感网名大全 2019-12-26
Intellij idea2020永久破解,亲测可用!!!
Intellij idea2020永久破解,亲测可用!!! 2020-07-29
背刺什么意思 网络词语背刺是什么梗
背刺什么意思 网络词语背刺是什么梗 2020-05-22
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总
苹果12mini价格表官网报价 iPhone12mini全版本价格汇总 2020-11-13
yue是什么意思 网络流行语yue了是什么梗
yue是什么意思 网络流行语yue了是什么梗 2020-10-11
返回顶部