SpringCloud出現(xiàn)OptionsForbidden403問(wèn)題解決方法

摘要:本文簡(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àn)Options Forbidden 403問(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)

外貿(mào)網(wǎng)站建設(shè)