问题标签 [http-proxy-middleware]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
node.js - 如何使用 http-proxy-middleware 代理到许多不同的目标?
在http-proxy-middleware
库中,文档声明您可以使用该target
选项来指定您希望代理请求的位置。但是,它们还允许您使用该router
选项来指定将用于在运行时功能解析目标的函数。
文档:https ://www.npmjs.com/package/http-proxy-middleware
我正在使用 TypeScript,如果我查看代理的声明文件,我可以看到:
您可以在这里看到router
和target
都是可以为空的。我的假设是,如果你使用一个,另一个可以省略,但你总是需要至少 1 个。
但是,如果我使用这样的router
属性:
并省略target
, 然后在运行时我收到此错误:
我意识到我可以将几乎任何东西放入target
其中,它会运行得很好,而我的router
函数就是实际定义目标代理的东西。这只是图书馆的一个错误,还是我误解了这两个选项的用途?
javascript - 带有 Wordpress 的 Webpack 代理不会在页面内重定向 GET 请求
我正在尝试创建一个 Wordpress 主题开发环境(更准确地说是从带有浏览器同步的 gulp 迁移到 webpack)。因此,我设置了一个代理指向我的 wordpress 安装(也在本地)。当我在浏览器中访问 webpack 开发服务器时,代理似乎工作正常。例如localhost:8080/sample-page
显示 WordPress 页面localhost:8000/sample-page
。
问题是,该页面内的任何链接都将指向原始端口。当我使用页面上的导航时,我被重定向回localhost:8000/*
.
使用 gulp,我只需要创建浏览器同步任务,其中一个选项是目标 URL,它运行良好:
我尝试更改 HTTP-proxy-middleware 的不同选项,目前,我得到了以下配置(我还尝试了自动重写等选项):
publicPath 将解析为/wp-content/themes/theme-name/build/
(我也尝试包括整个 url 而不仅仅是路径)
我希望我可以让它像浏览器同步代理一样运行。也许我需要设置一些标题?
我感谢所有的帮助!
编辑:
我从浏览器同步源中找到了以下代码,它似乎有一种方法负责替换页面内的所有链接: https ://github.com/BrowserSync/browser-sync/blob/master/packages/browser-同步/lib/server/proxy-utils.js
开发服务器似乎有可能使用onProxyRes
钩子修改请求,我可以在其中执行修改所有链接之类的操作,我只是没有时间尝试,所以我现在使用浏览器同步 atm。
asp.net-mvc-4 - 如何使用 http-proxy-middleware 捕获代理响应和重定向?
我有 webpack-dev-server 提供静态文件。(localhost:4000) 我有后端服务器服务于 api 请求。(本地主机)
在此之前,需要使用 idp 提供者进行身份验证。
当我访问时localhost:4000
,它会被代理localhost
进行身份验证。
localhost
服务器重定向到 idp 进行身份验证,一旦经过身份验证的 idP 重定向回“localhost”。现在这就是问题所在。我希望它被重定向到localhost:4000
not localhost
。
有没有办法做到这一点?
javascript - 如何修复 express http-proxy-middleware 的超时
我正在使用 http-proxy-middleware 设置快速服务器。当从代理请求时,请求会一直持续到最终超时。
我尝试代理的 URL 是https://www.pegelonline.wsv.de/,尤其是它提供的 WFS。我已经阅读了文档,并且 TL;DR 似乎适用于我的案例,因为我不打算做任何列出的特殊事情。我也试过速记。
https://github.com/chimurai/http-proxy-middleware#tldr
最小的例子:
https://github.com/isthisstackoverflow/repro-waterlevel
^ 结果如预期。
^ 最终超时。
更新
我认为问题是我试图将 https 代理到 http。不过,我不知道到底是什么问题,也不再需要这样做。
reactjs - 如何将我的 API URL 代理到其他代理
我在http://localhost:8081/post URL 上,我的 API 托管在一些“ http://dummy.restapiexample.com/api/v1 ”上。
我希望它出现在“/custom/create”之类的网络选项卡中。但是网络选项卡显示“ http://localhost:8081/custom/create ”,但不应在其中附加 localhost URL。它应该采用托管的 API URL。
我正在使用 CRA 样板。我不想用 express 来做同样的事情。
我尝试了以下代码
对于 API 调用,我使用以下格式:
我不知道如何隐藏整个托管 API URL 并在网络选项卡中显示代理 URL。
请就此提出宝贵的建议。
我是代理中间件的新手。先感谢您 :)
node.js - nodejs 使用动态子域代理请求
我希望我的服务器充当客户端和另一台服务器之间的中间件,问题是目标服务器有一个动态子域,每次随机更改
我已经尝试过 http-proxy-middleware,它适用于非动态目标,但我不能做得更好
我需要一种方法来代理从 x1.myserver.com 到 x1.traget_server.com 和 x2.myserver.com 到 x2.traget_server.com 的请求,其中 x1,x2 应该在运行时工作并动态添加的随机值
node.js - 通过添加从另一个请求返回的身份验证令牌来修改 http 代理请求
我正在使用 http-proxy-middleware ( https://github.com/chimurai/http-proxy-middleware#http-proxy-events ) 来实现一个简单的代理 (调用它my-proxy/
) 到另一个 REST API (调用它/rest-api
)这要求用户在 HTTP 标头中传递身份验证令牌auth-token
。可以使用POST /rest-api/auth
正文中的凭据从端点获取令牌。
我希望我的代理接受传入的请求并检查是否auth-token
在请求标头中设置,如果没有执行 aPOST /rest-api/auth
以检索令牌并auth-token
在将请求传递给rest-api/
.
在我指定的代理配置中
我可以看到body.token
返回正确的令牌。但是,setHeader
调用失败并显示Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
.
我认为这意味着我修改的请求在等待回调之前已经发送到rest-api/
,但我不知道在我的场景中如何最好地解决这个问题。
有什么帮助吗?
node.js - 无法在 express api 和反应应用程序中使用 http-proxy-middleware 进行代理
我有一个调用 node-express API 的反应应用程序,它代理到不同主机上的另一台服务器。
它给了我 http 302
我的反应应用程序在https://localhost:3000 我的 node-express api 在http://localhost:8080
反应应用程序中的代码:
快递应用程序中的代码:
reactjs - 在 http-proxy-middleware 的 setupProxy.js 中反应导入环境生成意外标识符
我需要使用 craco 获得的变量来设置代理 http-proxy-middleware 的目标。我已按照本指南为不同的环境提供更多配置文件。我有 3 个文件 local.js、development.js 和 production.js,它们由 craco 使用不同的 npm run startlocal、startdevelopment 选择。
在 package.json 我有:
问题是我想根据我所处的环境更改代理功能,因此使用 http-proxy-middleware 我使用了 setupProxy.js ,如guide所述。如果我从“环境”插入导入环境;在 setupProxy.js 我有错误的意外标识符。
这是 setupProxy.js 的代码:
npm run startlocal 的控制台输出
意外的标识符
npm ERR!代码 ELIFECYCLE
npm 错误!errno 1
npm 错误!seltirmedfront_candidati@0.1.0 startlocal:cross-env CLIENT_ENV=local craco start
npm ERR!退出状态 1
npm ERR!
npm 错误!在 seltirmedfront_candidati@0.1.0 startlocal 脚本中失败。
npm 错误!这可能不是 npm 的问题。上面可能有额外的日志输出。
我想这个问题与 setupProxy.js 是自动加载的并且在 craco.config.js 之前加载的事实有关,所以它没有那个导入。
node.js - http-proxy-middleware“set-cookie”响应未在浏览器中设置
我曾尝试查看过去对此类问题的响应,例如以下内容,但它们都会引发各种错误:
- http-proxy-middleware,如何复制所有/cookie 标头
- https://github.com/chimurai/http-proxy-middleware/issues/78
- http-proxy-middleware,如何复制所有/cookie 标头
我的代理设置返回正确Response Headers
的设置 cookie set-cookie: JSESSIONID=yElsHUaPE8Ip_AAD_oIfTQ; Path=/; Secure; HttpOnly;
:. 这些不是会话 cookie。
但是,我的登录正式失败,因为JSESSIONID
它没有被存储为 cookie。
这是我的代理设置:
成功时,服务器返回一个302
重定向。这会有影响吗??这就是为什么我有代理表的原因......
此外,由于看起来响应正常,我已经删除了onProxyRes
希望自动设置它的字段,但也没有运气。
我很欣赏任何想法/解决方案。