Spring Cloud出現(xiàn)Options Forbidden 403問題解決方法
摘要:本文簡述了博主在開發(fā)過程中,需要跨域調試的時候,出現(xiàn)了 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協(xié)議中的一個狀態(tài)碼(Status Code)??梢院唵蔚睦斫鉃闆]有權限訪問此站點。
問題
在使用 Spring Cloud 的項目中,本地跨域調試發(fā)現(xiàn) POST 請求轉為了 OPTIONS 請求,并且服務端拒絕訪問,其實是 CORS 請求的問題。
CORS 請求分為2類: 簡單請求 和 非簡單請求。兩者主要的區(qū)分點在于:
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)。
只要滿足以上兩點,則為簡單請求;否則為非簡單請求。
簡單請求的處理方式是瀏覽器直接發(fā)送 CORS 請求。非簡單請求的處理方式是瀏覽器發(fā)送預檢請求,表示詢問服務器當前的域名是否可以訪問正常服務器,如果可以訪問,則發(fā)送正常的請求到服務器;否則報錯。
現(xiàn)在確定遇到的問題就是在 CORS 請求預檢的時候發(fā)現(xiàn)域名不在服務器端的白名單里面,所以需要修改服務端的請求返回報文。
解決方案
在網(wǎng)關中添加下面的過濾器,在每次請求返回報文中添加報文頭,即可正常訪問
@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() {} }
參考文章:
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
java以json格式向后臺服務器接口發(fā)送請求的實例
下面小編就為大家分享一篇java以json格式向后臺服務器接口發(fā)送請求的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-01-01SpringBoot攔截器如何獲取http請求參數(shù)
這篇文章主要給大家介紹了SpringBoot攔截器如何獲取http請求參數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-09-09java核心編程之文件過濾類FileFilter和FilenameFilter
這篇文章主要為大家詳細介紹了java文件過濾類FileFilter和FilenameFilter,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-08-08JAVA微信掃碼支付模式二線上支付功能實現(xiàn)以及回調
本篇文章主要介紹了JAVA微信掃碼支付模式二線上支付功能實現(xiàn)以及回調,這里整理了詳細的代碼,有需要的小伙伴可以參考下。2016-11-11