首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将此curl命令转换为JavaScript的fetch

如何将此curl命令转换为JavaScript的fetch
EN

Stack Overflow用户
提问于 2021-06-03 23:56:11
回答 1查看 377关注 0票数 2

我有以下cURL命令:

代码语言:javascript
运行
复制
// original curl
curl https://example.com \
  -F "id=id" \
  -F "secret=secret"

我认为可以用这个fetch表达式来表示:

代码语言:javascript
运行
复制
// fetch
const body = new FormData();
body.append('id', 'id');
body.append('secret', 'secret');

return fetch('https://example.com', {
  method: 'POST',
  mode: 'no-cors',
  headers: {
    'Content-Type': 'multipart/form-data',
  },
  body,
})

然后,以cURL的形式复制提取请求,生成以下命令:

代码语言:javascript
运行
复制
// generated curl
curl 'https://example.com' \
  -H 'content-type: multipart/form-data' \
  --data-raw $'------WebKitFormBoundaryH2Ve4S1AUbboJ21W\r\nContent-Disposition: form-data; name="id"\r\n\r\nid\r\n------WebKitFormBoundaryH2Ve4S1AUbboJ21W\r\nContent-Disposition: form-data; name="secret"\r\n\r\nsecret\r\n------WebKitFormBoundaryH2Ve4S1AUbboJ21W--\r\n' \
  --compressed

令我惊讶的是,当对端点和表单值使用实数据而不是占位符数据时,原始curl请求可以工作,但是生成的curl请求不起作用(提取版本也是如此)。

有什么明显的东西我错过了吗?原始的cURL命令和fetch表达式/生成的cURL命令有什么区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-04 00:24:28

我相信你的目标如下。

  • 您希望将以下curl命令转换为Javascript的fetch。 curl https://example.com \ -F "id=id“\ -F "secret=secret”

在本例中,下面的脚本如何?当使用FormData时,Content-Type会通过包含边界自动添加到请求头中。

示例脚本:

代码语言:javascript
运行
复制
const body = new FormData();
body.append('id', 'id');
body.append('secret', 'secret');
return fetch('https://example.com', {
  method: 'POST',
  // mode: 'no-cors' // I thought that this might not be required to be used. But please check this for your actual situation.
  body
});

参考资料:

添加:

关于你下面的评论,

您知道如何将原始的cURL命令转换为不使用-F选项的东西吗?

在这种情况下,手动创建请求体如何?

代码语言:javascript
运行
复制
curl -H 'Content-Type: multipart/form-data; boundary=boundaryboundary' \
  -d $'--boundaryboundary\r\nContent-Disposition: form-data; name="id"\r\n\r\nid\r\n--boundaryboundary\r\nContent-Disposition: form-data; name="secret"\r\n\r\nsecret\r\n--boundaryboundary--\r\n' \
  'https://example.com'
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67829949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档