我可以将 cookie 添加到 webpack 开发服务器代理吗?
Posted
技术标签:
【中文标题】我可以将 cookie 添加到 webpack 开发服务器代理吗?【英文标题】:Can I add cookies to a webpack dev server proxy? 【发布时间】:2016-04-22 11:37:09 【问题描述】:我正在尝试在我的 webpack 开发服务器中设置代理。问题是我无法控制我要连接的服务器,我需要对请求进行身份验证。
有没有一种方法可以将 cookie 添加到我发送到代理服务器的请求中?我浏览了webpack dev server proxy server page 和它链接到的node-http-proxy 页面,我没有看到任何关于cookie 的提及。我也不确定是否有办法让我看到这些转发的请求,所以我不知道我正在尝试的任何事情是否正在做任何事情。
有什么想法吗?
【问题讨论】:
【参考方案1】:如果您只需要为代理重写 cookie 域,请查看 node-http-proxy 中的选项 cookieDomainRewrite。
此外,如果您想找到一种方法在请求/响应中围绕 cookie 注入自定义行为,请查看您可以挂钩的事件:
proxy.on('proxyRes', function (proxyRes, req, res)
console.log('RAW Response from the target',JSON.stringify(proxyRes.headers, true, 2));
);
proxy.on('proxyReq', function (proxyRes, req, res)
console.log('RAW Request from the target',JSON.stringify(proxyReq.headers, true, 2));
);
https://github.com/nodejitsu/node-http-proxy#listening-for-proxy-events
这些选项可以添加到 devServer 代理的 webpack.config.js 中,如下所示:
devServer:
proxy:
onProxyReq: function(proxyReq, req, res)
proxyReq.setHeader('x-added', 'foobar');
,
cookieDomainRewrite: ""
https://github.com/chimurai/http-proxy-middleware#http-proxy-events
【讨论】:
【参考方案2】:在进一步研究之后,开发服务器似乎只会转发您发送的任何 cookie。不适用于我尝试执行的身份验证,我猜亚马逊有一些我无法解释的更多安全措施,但这就是答案。
将 cookie 添加到您发送到开发服务器的请求中,并正确设置代理。
【讨论】:
【参考方案3】:我写了一个小插件,可以轻松地将 cookie 添加到 webpack-dev-server:https://github.com/ktmud/http-proxy-middleware-secure-cookies
它会在需要时自动提示您输入身份验证 cookie,并尽可能将您的输入存储在系统钥匙串中。
【讨论】:
【参考方案4】:就我而言,这是解决方案:
添加cookie-parser
(来自npm或yarn),例如:yarn add 'cookie-parser' --dev
然后在devServer
中,让它喜欢
const cookieParser = require('cookie-parser') // put at the top
...
devServer:
before(app)
app.use(cookieParser())
app.all('/my/route1/', (req, res) =>
const result = msg: 'setting cookie'
res.cookie('foo', 'bar') // set cookie
res.writeHead(200, 'Content-Type': 'application/json' );
res.end(JSON.stringify(result));
);
app.all('/my/route2', (req, res) =>
const result =
my_cookie: req.cookies['foo'], // get cookie
res.writeHead(200, 'Content-Type': 'application/json' );
res.end(JSON.stringify(result));
);
,
【讨论】:
以上是关于我可以将 cookie 添加到 webpack 开发服务器代理吗?的主要内容,如果未能解决你的问题,请参考以下文章
angular2-webpack-starter 如何将 NodeJS 服务器添加到项目中
将 https 添加到 webpack 代理的 graphql express 端点
如何通过 webpacker 将 jstree 添加到 Rails
我试图通过Webpack将Quilljs添加到Rails 5.1应用程序中
HttpWebRequest:将 Cookie 添加到 CookieContainer -> ArgumentException(参数名称:cookie.Domain)