摘要:本文簡(jiǎn)述了博主在開發(fā)過(guò)程中,需要跨域調(diào)試的時(shí)候,出現(xiàn)了 OPTIONS 請(qǐng)求 Forbidden 的問(wèn)題,以及解決方法。
公司專注于為企業(yè)提供成都網(wǎng)站制作、成都網(wǎng)站建設(shè)、外貿(mào)營(yíng)銷網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、電子商務(wù)商城網(wǎng)站建設(shè),小程序設(shè)計(jì),軟件按需設(shè)計(jì)網(wǎng)站等一站式互聯(lián)網(wǎng)企業(yè)服務(wù)。憑借多年豐富的經(jīng)驗(yàn),我們會(huì)仔細(xì)了解各客戶的需求而做出多方面的分析、設(shè)計(jì)、整合,為客戶設(shè)計(jì)出具風(fēng)格及創(chuàng)意性的商業(yè)解決方案,創(chuàng)新互聯(lián)更提供一系列網(wǎng)站制作和網(wǎng)站推廣的服務(wù)。
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é)議中的一個(gè)狀態(tài)碼(Status Code)??梢院?jiǎn)單的理解為沒(méi)有權(quán)限訪問(wèn)此站點(diǎn)。
問(wèn)題
在使用 Spring Cloud 的項(xiàng)目中,本地跨域調(diào)試發(fā)現(xiàn) POST 請(qǐng)求轉(zhuǎn)為了 OPTIONS 請(qǐng)求,并且服務(wù)端拒絕訪問(wèn),其實(shí)是 CORS 請(qǐng)求的問(wèn)題。
CORS 請(qǐng)求分為2類: 簡(jiǎn)單請(qǐng)求 和 非簡(jiǎn)單請(qǐng)求。兩者主要的區(qū)分點(diǎn)在于:
1: 請(qǐng)求方法為 HEAD, GET, POST;
2: HTTP 頭信息為以下幾個(gè): Accept, Accept-Language,Content-Language, Last-Event-ID,Content-Type (值為 application/x-www-form-urlencoded、multipart/form-data、text/plain)。
只要滿足以上兩點(diǎn),則為簡(jiǎn)單請(qǐng)求;否則為非簡(jiǎn)單請(qǐng)求。
簡(jiǎn)單請(qǐng)求的處理方式是瀏覽器直接發(fā)送 CORS 請(qǐng)求。非簡(jiǎn)單請(qǐng)求的處理方式是瀏覽器發(fā)送預(yù)檢請(qǐng)求,表示詢問(wèn)服務(wù)器當(dāng)前的域名是否可以訪問(wèn)正常服務(wù)器,如果可以訪問(wèn),則發(fā)送正常的請(qǐng)求到服務(wù)器;否則報(bào)錯(cuò)。
現(xiàn)在確定遇到的問(wèn)題就是在 CORS 請(qǐng)求預(yù)檢的時(shí)候發(fā)現(xiàn)域名不在服務(wù)器端的白名單里面,所以需要修改服務(wù)端的請(qǐng)求返回報(bào)文。
解決方案
在網(wǎng)關(guān)中添加下面的過(guò)濾器,在每次請(qǐng)求返回報(bào)文中添加報(bào)文頭,即可正常訪問(wèn)
@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 詳解
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。
分享標(biāo)題:SpringCloud出現(xiàn)OptionsForbidden403問(wèn)題解決方法
網(wǎng)頁(yè)路徑:http://muchs.cn/article30/jehcpo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、ChatGPT、網(wǎng)頁(yè)設(shè)計(jì)公司、靜態(tài)網(wǎng)站、網(wǎng)站內(nèi)鏈、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)