curl 在终端中运行良好,使用 httr 时出现 419 错误
curl runs fine in the terminal, getting 419 error with httr
我有一个 curl 在终端中 运行 没问题,会产生响应。它结束于:
--data-raw 'field1=123456&_token=mytoken'
--compressed
我已将 data
列表设置如下:
data = list(
`field1` = '123456',
`_token` = 'mytoken'
)
然后我对 POST 进行以下调用:
httr::POST(url = 'url',
httr::add_headers(.headers=headers),
httr::set_cookies(.cookies=cookies),
body = data
#,encode = 'raw'
)
curl--data-raw
中的raw
是什么意思?这是否意味着我会设置 encode='raw'
?我已经尝试了我能想到的 encode
的每一次迭代。
当我尝试在 R 中 运行 时,我得到:
Status: 419
Content-Type: application/json
如果我转身 运行 终端中的原始 curl,一切正常。
关于我可能指定的错误有什么想法吗?
我使用了 httpreq.com 并尝试了来自终端的工作 curl 和来自 R 的改编 httr 代码(将 url 替换为 httpreq.com 记录端点) .我注意到两个不同之处:
- 首先,R 的记录缺少
cookies = c()
中定义的一个 cookie 参数。
- 其次,“User-Agent”不同。对于终端,它记录为
"libcurl\/7.64.1 r-curl\/4.3 httr\/1.4.2"
。对于 R 脚本,它记录为 "Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/....
。这是我在 headers = c(
User-Agent="...")
中指定的,因为这是我在原始 curl 中找到的。我需要更换 R 的代理吗?
我最终在终端中工作的原始 curl 上调用了 system()
。这让我可以在更舒适的 R 中工作,但我无法使用 httr 解决方案。
我有一个 curl 在终端中 运行 没问题,会产生响应。它结束于:
--data-raw 'field1=123456&_token=mytoken'
--compressed
我已将 data
列表设置如下:
data = list(
`field1` = '123456',
`_token` = 'mytoken'
)
然后我对 POST 进行以下调用:
httr::POST(url = 'url',
httr::add_headers(.headers=headers),
httr::set_cookies(.cookies=cookies),
body = data
#,encode = 'raw'
)
curl--data-raw
中的raw
是什么意思?这是否意味着我会设置 encode='raw'
?我已经尝试了我能想到的 encode
的每一次迭代。
当我尝试在 R 中 运行 时,我得到:
Status: 419
Content-Type: application/json
如果我转身 运行 终端中的原始 curl,一切正常。
关于我可能指定的错误有什么想法吗?
我使用了 httpreq.com 并尝试了来自终端的工作 curl 和来自 R 的改编 httr 代码(将 url 替换为 httpreq.com 记录端点) .我注意到两个不同之处:
- 首先,R 的记录缺少
cookies = c()
中定义的一个 cookie 参数。 - 其次,“User-Agent”不同。对于终端,它记录为
"libcurl\/7.64.1 r-curl\/4.3 httr\/1.4.2"
。对于 R 脚本,它记录为"Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/....
。这是我在headers = c(
User-Agent="...")
中指定的,因为这是我在原始 curl 中找到的。我需要更换 R 的代理吗?
我最终在终端中工作的原始 curl 上调用了 system()
。这让我可以在更舒适的 R 中工作,但我无法使用 httr 解决方案。