如何将此curl命令转换为JavaScript';来吧
我有以下cURL命令:如何将此curl命令转换为JavaScript';来吧,javascript,curl,fetch,Javascript,Curl,Fetch,我有以下cURL命令: // original curl curl https://example.com \ -F "id=id" \ -F "secret=secret" 我认为可以用这个fetch表达式来表示: // fetch const body = new FormData(); body.append('id', 'id'); body.append('secret', 'secret'); return fetch('https
// original curl
curl https://example.com \
-F "id=id" \
-F "secret=secret"
我认为可以用这个fetch
表达式来表示:
// 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将生成以下命令:
// 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请求不能工作(fetch版本也不能)
有什么明显的东西我遗漏了吗?原始cURL命令和fetch expression/generated cURL命令之间有什么区别?我相信您的目标如下
- 您希望将下面的curl命令转换为Javascript的
fetch
curl https://example.com \ -F "id=id" \ -F "secret=secret"
FormData
时,Content-Type
通过包含边界自动添加到请求头中
示例脚本:
参考:
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'
您的目标是正确的,省略
内容类型
标题是一个好主意,但不幸的是,fetch查询仍然与curl
命令不同。注意,我确实需要在我的案例中使用模式:“no cors”
在我的案例中,在获取示例中,响应。ok
始终为false。但是当使用原始的curl
命令时,我得到了一个有效的JSONresponse@Raphael谢谢你的回复。给您带来不便,我深表歉意。关于模式:“无cors”
,我明白了。关于,但不幸的是,fetch查询仍然与curl命令不同。
,不幸的是,我无法理解它。我为此道歉。那么,我可以问一下关于仍然不同的的细节吗?当我测试上面修改的脚本时,我可以确认它与curl是相同的。所以我想确认一下你目前的情况。例如,作为测试,对于上面修改的脚本,当您没有使用模式:“no cors”
时,您将获得什么结果?@Raphael raftpanah感谢您的回复。从你的回答中,我可以理解你的处境。当我再次检查curl命令和修改后的Javascript时,我确认这两个请求是相同的。因此,我想确认是否还有其他情况。关于将原始cURL命令转换为不使用-F选项的命令,在这种情况下,我认为可以手动创建请求主体。为此,我在回答中添加了示例curl命令。我认为区别在于模式:“无cors”
导致响应。状态始终为0
。
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'