国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

ZuulFilter中設(shè)置Response的原理。

senntyou / 1360人閱讀

摘要:于是了一翻,找到了渲染的類,原來是可以看到,這是這個(gè)里輸出了我設(shè)置的內(nèi)容。還有一個(gè)看來一樣,也是不會(huì)得到執(zhí)行的。所以設(shè)置了就等于對(duì)其它過濾器一路開了紅燈,都不會(huì)被執(zhí)行了,直到,輸出的內(nèi)容。

在網(wǎng)上看到一個(gè)Zuul過濾器異常后,自定義Response的例子如下:

    RequestContext ctx = RequestContext.getCurrentContext();
    ctx.setSendZuulResponse(false);
    ctx.setResponseStatusCode(401);
    ctx.setResponseBody(error.getJSONResponse());
    ctx.getResponse().setContentType("application/json;charset=UTF-8");

設(shè)置了以上代碼,果然起了作用。

于是debug了一翻,找到了渲染的類,原來是
SendResponseFilter :

    @Override
    public boolean shouldFilter() {
        RequestContext context = RequestContext.getCurrentContext();
        return context.getThrowable() == null
                && (!context.getZuulResponseHeaders().isEmpty()
                    || context.getResponseDataStream() != null
                    || context.getResponseBody() != null);
    }

    @Override
    public Object run() {
        try {
            addResponseHeaders();
            writeResponse();
        }
        catch (Exception ex) {
            ReflectionUtils.rethrowRuntimeException(ex);
        }
        return null;
    }

可以看到,這是這個(gè)Filter里輸出了我設(shè)置的內(nèi)容。
不過SendResponseFilter是post階段的filter啊,我是在pre階段設(shè)置的,
那么Zuul中負(fù)責(zé)執(zhí)行調(diào)用邏輯的Filter難道都執(zhí)行了(route階段)?但是看日志輸出,因該是
沒調(diào)用才對(duì)。

那么在route的幾個(gè)Filter中是如何執(zhí)行的呢?

RibbonRoutingFilter

    @Override
    public boolean shouldFilter() {
        RequestContext ctx = RequestContext.getCurrentContext();
        return (ctx.getRouteHost() == null && ctx.get(SERVICE_ID_KEY) != null
                && ctx.sendZuulResponse());
    }

可以看到因?yàn)閟endZuulResponse返回false,所以不會(huì)被執(zhí)行了。

還有一個(gè)SimpleHostRoutingFilter

    @Override
    public boolean shouldFilter() {
        return RequestContext.getCurrentContext().getRouteHost() != null
                && RequestContext.getCurrentContext().sendZuulResponse();
    }

看來一樣,也是不會(huì)得到執(zhí)行的。

所以設(shè)置了sendZuulResponse(false),就等于對(duì)其它過濾器一路開了紅燈,都不會(huì)被執(zhí)行了,直到
SendResponseFilter,輸出Response的內(nèi)容。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68235.html

相關(guān)文章

  • zuul實(shí)現(xiàn)Cors跨域兩種方式(https)

    摘要:大家都知道可以通過實(shí)現(xiàn)跨域。第一種方式在服務(wù)下添加一個(gè)實(shí)現(xiàn)跨域,實(shí)現(xiàn)起來方便。前端服務(wù)和后端服務(wù)在同一臺(tái)服務(wù)器上,服務(wù)調(diào)用服務(wù)時(shí),服務(wù)通過負(fù)載均衡進(jìn)入服務(wù)時(shí)時(shí),服務(wù)的請(qǐng)求跨域成功,時(shí),服務(wù)的請(qǐng)求跨域失敗。 大家都知道spring boot 可以通過@CrossOrigin實(shí)現(xiàn)跨域。但是在spring cloud 里,如果要粒度那么細(xì)的去控制跨域,這個(gè)就太繁瑣了,所以一般來說,會(huì)在路由z...

    wuaiqiu 評(píng)論0 收藏0
  • Yii支持多域名cors原理

    摘要:說明測(cè)試使用的接口域名,多域名為和。設(shè)置多域名嘗試直接通過的模塊追加值實(shí)現(xiàn),如下接口請(qǐng)求和響應(yīng)頭如下當(dāng)前域?yàn)椋杩缬蛘?qǐng)求的資源。故通過該方法不能設(shè)置多域名進(jìn)行。 首發(fā)于 樊浩柏科學(xué)院 平常我們遇到跨域問題時(shí),常使用 cors(Cross-origin resource sharin)方式解決。不知你是否注意到,在設(shè)置響應(yīng)頭 Access-Control-Allow-Origin 域的...

    Darkgel 評(píng)論0 收藏0
  • [Spring cloud 一步步實(shí)現(xiàn)廣告系統(tǒng)] 3. 網(wǎng)關(guān)路由

    摘要:獲取當(dāng)前請(qǐng)求的請(qǐng)求上下文記錄請(qǐng)求進(jìn)入時(shí)間需要最后一個(gè)執(zhí)行的后續(xù)更新做一個(gè)好人。 Zuul(Router and Filter) WIKI: 傳送門 showImg(https://i.loli.net/2019/07/24/5d38183f1dff763558.png); 作用 認(rèn)證,鑒權(quán)(Authentication/Security) 預(yù)判(Insights) 壓力測(cè)試(Stre...

    miguel.jiang 評(píng)論0 收藏0
  • springCloud學(xué)習(xí)4(Zuul服務(wù)路由)

    摘要:但是如果將負(fù)載均衡器置于所有服務(wù)前便不是一個(gè)好主意,會(huì)造成瓶頸。服務(wù)超時(shí)使用的和庫(kù)來進(jìn)行請(qǐng)求。支持以下四種過濾器前置過濾器在將請(qǐng)求發(fā)送到目的地之前被調(diào)用。通常用于記錄從目標(biāo)服務(wù)返回的響應(yīng)處理錯(cuò)誤或?qū)徍嗣舾行畔ⅰ? showImg(https://segmentfault.com/img/remote/1460000019531578); springcloud 總集:https://ww...

    wuaiqiu 評(píng)論0 收藏0
  • JS 跨域原因及其解決方案

    摘要:產(chǎn)生跨域問題的原因跨域問題是瀏覽器同源策略限制,當(dāng)前域名的只能讀取同域下的窗口屬性。比如,其中是協(xié)議名,是子域名,是主域名,端口號(hào)是,當(dāng)在在頁(yè)面中從一個(gè)請(qǐng)求數(shù)據(jù)時(shí),如果這個(gè)的協(xié)議名子域名主域名端口號(hào)任意一個(gè)有一個(gè)不同,就會(huì)產(chǎn)生跨域問題。 產(chǎn)生跨域問題的原因 跨域問題是瀏覽器同源策略限制,當(dāng)前域名的js只能讀取同域下的窗口屬性。 跨域問題產(chǎn)生的場(chǎng)景 當(dāng)要在在頁(yè)面中使用js獲取其他網(wǎng)...

    voidking 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<