第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

請(qǐng)解釋一下 Spring Boot 中的 Pre-flight Filter 代碼

請(qǐng)解釋一下 Spring Boot 中的 Pre-flight Filter 代碼

當(dāng)年話下 2023-02-23 18:19:35
我在 Spring boot 中有一些關(guān)于 Pre-flight Filter 的代碼,但我不知道這段代碼的用途:@Component// We want to put this in front of SpringSessionFilter@Order(Ordered.HIGHEST_PRECEDENCE)public class RequestFilter {    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) {        HttpServletRequest request = (HttpServletRequest) req;        HttpServletResponse response = (HttpServletResponse) res;        response.setHeader("Access-Control-Allow-Origin", "*");        response.setHeader("Access-control-Allow-Methods", "POST, PUT, GET, OPTIONS, DELETE");        response.setHeader("Access-Control-Allow-Headers", "x-requested-with, x-auth-token");        response.setHeader("Access-Control-Max-Age", "3600");        response.setHeader("Access-Control-Allow-Credentials", "true");        if(!(request.getMethod().equalsIgnoreCase("OPTIONS"))) {            try {                chain.doFilter(req, res);            } catch (Exception e) {                e.printStackTrace();            }        } else {            System.out.println("Pre-fight");            response.setHeader("Access-Control-Allowed-Methods", "POST, GET, DELETE");            response.setHeader("Access-Control-Max-Age", "3600");            response.setHeader("Access-Control-Allow-Headers", "authorization, content-type, x-auth-token, " +                    "access-control-request-headers,access-control-request-method,accept,origin,authorization,x-requested-with");            response.setStatus(HttpServletResponse.SC_OK);        }    }    public void init(FilterConfig filterConfig) {}    public void destroy() {}}這是這個(gè)文件的解釋:所以當(dāng) Angular 2 發(fā)送一個(gè) http post ajax 調(diào)用時(shí),它會(huì)首先發(fā)送一個(gè)飛行前的方法類型不是“POST”而是“OPTIONS”。如果這個(gè)預(yù)檢有一個(gè)有效的響應(yīng),那么它將開(kāi)始發(fā)送真正的 http post。這是為了防止跨站攻擊。在后端,spring 對(duì)此沒(méi)有開(kāi)箱即用的處理。所以我們需要檢查 http 方法是否是預(yù)檢。如果是,我們將只用有效的標(biāo)頭和信息進(jìn)行響應(yīng)。如果沒(méi)有,我們將繼續(xù)過(guò)濾器鏈。但是看不懂源碼。任何人都可以為我解釋嗎?
查看完整描述

1 回答

?
繁星點(diǎn)點(diǎn)滴滴

TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超3個(gè)贊

為什么 response.setHeader("Access-Control-Allow-Origin", "*"); ?


跨源資源共享 (CORS) 是一種安全概念,允許限制在 Web 瀏覽器中實(shí)現(xiàn)的資源。它可以防止 JavaScript 代碼生成或使用針對(duì)不同來(lái)源的請(qǐng)求。


例如,您的 Web 應(yīng)用程序在 8080 端口上運(yùn)行,并且通過(guò)使用 JavaScript,您試圖從 9090 端口使用 RESTful Web 服務(wù)。在這種情況下,您將在 Web 瀏覽器上面臨跨源資源共享安全問(wèn)題。要授予訪問(wèn)權(quán)限,您可以將其設(shè)置為 * 或您的域


CORS 預(yù)檢請(qǐng)求是檢查 CORS 協(xié)議是否被理解的 CORS 請(qǐng)求。


這是一個(gè) OPTIONS 請(qǐng)求,使用三個(gè) HTTP 請(qǐng)求標(biāo)頭:Access-Control-Request-Method, Access-Control-Request-Headers, and the Origin header.


請(qǐng)求由瀏覽器在需要時(shí)發(fā)出preflight。automatically在正常情況下,前端開(kāi)發(fā)人員不需要自己制作此類請(qǐng)求。


DELETE例如,在發(fā)送 DELETE 請(qǐng)求之前,客戶端可能會(huì)通過(guò)使用預(yù)檢請(qǐng)求詢問(wèn)服務(wù)器是否允許請(qǐng)求:


OPTIONS /resource/foo?

Access-Control-Request-Method: DELETE?

Access-Control-Request-Headers: origin, x-requested-with

Origin: https://foo.bar.org

如果服務(wù)器允許,那么它將使用 Access-Control-Allow-Methods 響應(yīng)標(biāo)頭響應(yīng)預(yù)檢請(qǐng)求,其中列出了 DELETE:


HTTP/1.1 204 No Content

Connection: keep-alive

Access-Control-Allow-Origin: https://foo.bar.org

Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE

Access-Control-Max-Age: 86400

查看完整回答
反對(duì) 回復(fù) 2023-02-23
  • 1 回答
  • 0 關(guān)注
  • 148 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)