在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    回顧下跨域解決方案http-proxy-middleware

    我們?cè)赗eact(或Vue)項(xiàng)目本地開發(fā)過程中很容易由前端自己解決跨域問題,這里面就用到的是插件http-proxy-middleware,它并不是webpack獨(dú)享的插件,而是一個(gè)通用插件,它對(duì)http-proxy進(jìn)行了一層封裝,更加方便我們使用。

    之前剛接觸webpack的時(shí)候?qū)戇^一個(gè)webpack反向代理proxyTable設(shè)置

    前幾天有個(gè)測試同事找我解決她的跑的本地項(xiàng)目測試公司項(xiàng)目時(shí),出現(xiàn)跨域的情況,因?yàn)榍岸隧?xiàng)目不是spa項(xiàng)目,沒有webpack之類的,所以就準(zhǔn)備參照http-proxy-middleware來實(shí)現(xiàn)。

    我們看看http-proxy-middleware的源碼,目前它的最新版本是2.0.6,貌似2.x版本和1.x版本導(dǎo)出的方法有所不同

    先看看npm官網(wǎng)的示例介紹

    const express = require('express');const { createProxyMiddleware } = require('http-proxy-middleware');const app = express();app.use('/api', createProxyMiddleware({ target: 'http://www.example.org', changeOrigin: true }));app.listen(3000);

    所以核心createProxyMiddleware方法,我們繼續(xù)看

    // node_modules/http-proxy-middleware/dist/index.jsconst http_proxy_middleware_1 = require("./http-proxy-middleware");function createProxyMiddleware(context, options) { const { middleware } = new http_proxy_middleware_1.HttpProxyMiddleware(context, options); return middleware;}exports.createProxyMiddleware = createProxyMiddleware;

    繼續(xù)看這個(gè)middleware是怎么實(shí)現(xiàn)的。

    // node_modules/http-proxy-middleware/dist/http-proxy-middleware.jsconst httpProxy = require("http-proxy");class HttpProxyMiddleware { constructor(context, opts) { this.logger = (0, logger_1.getInstance)(); this.wsInternalSubscribed = false; this.serverOnCloseSubscribed = false; // https://github.com/Microsoft/TypeScript/wiki/'this'-in-TypeScript#red-flags-for-this this.middleware = async (req, res, next) => { var _a, _b; if (this.shouldProxy(this.config.context, req)) { try { const activeProxyOptions = await this.prepareProxyRequest(req); this.proxy.web(req, res, activeProxyOptions); } catch (err) { next(err); } } else { next(); } }) this.proxy = httpProxy.createProxyServer({}); ...}exports.HttpProxyMiddleware = HttpProxyMiddleware;

    終于找到核心實(shí)現(xiàn)middleware了,滿足this.shouldProxy的就會(huì)利用this.proxy.web進(jìn)行代理了,所以我們?nèi)绻煜ttp-proxy的配置的,我們可以直接跳過http-proxy-middleware來使用http-proxy,但是好像也沒這個(gè)必要吧。。。

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請(qǐng)聯(lián)系管理員(admin#wlmqw.com)刪除。
    (0)
    用戶投稿
    上一篇 2022年6月28日 15:11
    下一篇 2022年6月28日 15:11

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時(shí)間:周一至周五,10:30-18:30,節(jié)假日休息