application/x-www-form-urlencoded 你懂么?

我反正是很汗颜,使用 node 的 fetch 时查了半天问题。

用 express 对特定 api 做简单的转发,要转发的服务需要 content-type 是 application/x-www-form-urlencoded。

app.use('/proxy', (req, res) => {
  fetch('https://target.url.com', {
    method: 'POST',
    headers: {
      'content-type': 'application/x-www-form-urlencoded'
    },
    // req.body 是一个对象
    body: new URLSearchParams(req.body)
  });
});

原来 application/x-www-form-urlencoded 需要 body 是

encodeURIComponent(key1)=encodeURIComponent(value1)&encodeURIComponent(key2)=encodeURIComponent(value2)

7 个赞

???
不是我有问题

这不是菜嘛,要是知道了还会发帖汗颜么

你让gpt写啊

1 个赞

可能是我敏感,看着你的回复就挺难受的。

我发帖的原因是因为我觉得肯定会有和我一样不清楚的佬友存在,有需要的人看到有用就行,没用关掉就好。

怎么说呢,您厉害,您能力强,但是请不要冷嘲热讽。

1 个赞

傲慢是原罪。

用cursor的 claude-3.5-sonnet 写的也是错的:joy:

你得告诉它 要以什么方式提交

可能是我姿势不对吧,加了content-type的条件。不过它给过我 axio 的代码,而我又不想加依赖了,只想用 node 的 fetch

所以呢?写http的人对http协议还理解在自我感觉表面吗 :joy:

image
这么多呢

是的,根据 content-type 不同选不同的格式,最后在 fetch 的 body 参数里转成 string