簡體   English   中英

如何在 node-http-proxy 中設置 Access-Control-Allow-Headers header

[英]How to set Access-Control-Allow-Headers header in node-http-proxy

我正在使用coinbase-pro 庫通過本地主機上的表單向 coinbase 沙箱 api 發出發布請求。 我正在嘗試使用node-http-proxy來解決 CORS 錯誤但沒有成功。 我一直在為此撞牆一段時間,任何幫助將不勝感激。

const express = require("express");
const httpProxy = require("http-proxy");

const port = 5050;

const app = express();
const proxy = httpProxy.createProxyServer({});

app.use(function(req, res) {
  delete req.headers["origin"];
  delete req.headers["referer"];
  delete req.headers["host"];


  res.setHeader("Access-Control-Allow-Origin", "*");
  res.setHeader(
    "Access-Control-Allow-Headers",
    "Content-type, cb-access-key,cb-access-passphrase,cb-access-sign,cb-access-timestamp"
  );
  res.setHeader(
    "Access-Control-Allow-Methods",
    "GET,POST,PUT,DELETE,OPTIONS"
  );

  const apiURL = 'https://api-public.sandbox.pro.coinbase.com'
  proxy.web(req, res, { target: apiURL });
});

app.listen(port, () =>
  console.log("Started proxy on port", port)
);

錯誤: Access to fetch at 'http://localhost:5050/orders' from origin 'http://localhost:3000' has been blocked by CORS policy: Request header field cb-access-passphrase is not allowed by Access-Control-Allow-Headers in preflight response.

答案在這里

我認為修改代理響應 header 不在當前文檔中。

proxy.on('proxyRes', function(proxyRes, req, res) {
  console.log('Raw [target] response', JSON.stringify(proxyRes.headers, true, 2));


  proxyRes.headers['x-reverse-proxy'] = "custom-proxy";
  proxyRes.headers['cache-control'] = "max-age=10000";

  console.log('Updated [proxied] response', JSON.stringify(proxyRes.headers, true, 2));

  // Do not use res.setHeader as they won't override headers that are already defined in proxyRes
  // res.setHeader('cache-control', 'max-age=10000');
  // res.setHeader('x-reverse-proxy', 'custom-proxy');

});

關鍵是在"proxyRes"事件中使用proxyRes ,例如proxyRes.headers[key] = value而不是依賴res.setHeader(key, value) ,因為當代理目標響應標頭中已經存在 key 時res.setHeader不起作用.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM