0

我正在努力调试我目前在使用 Box-API 时遇到的问题。鉴于几千个用户文件,我能够始终如一地成功下载大部分文件,但其他文件始终失败并出现以下响应:

<?xml version="1.0" encoding="UTF-8"?>
<Error><Code>InvalidArgument</Code><Message>Either the Signature query string parameter or the Authorization header should be specified, not both</Message><ArgumentValue>BoxAuth api_key=<removed>&amp;auth_token=<removed></ArgumentValue><ArgumentName>Authorization</ArgumentName><RequestId>83572B6EE6CCAF05</RequestId><HostId>MDk4PiUtdr/RS4vqd7p5Qw1MwohBHkhs35dLf6KWZx+11VBQtbTurwq0wVF9QTPC</HostId></Error>

这是从https://api.box.com/2.0/files/$ID/content端点返回的 302 重定向的位置返回的。对于大多数文件,这可以正常工作,但由于某些原因,对于某些文件,它始终不能正常工作。在通过和失败的情况下,我都捕获了对重定向 url 的请求的标头,并且看不到任何区别:

通过案例:

GET /bc/1/91652da319a59980c374f9059718080e/JolueqOGpciD6dgYhecNBoVpYxkvmYe1ZLheZor6BF4DUBIelMQTkFwYIys3nIibNIIEHUp447tBZLaXDzIbNQ,,/98713569dfe691813e006a1651c7c3e6/ HTTP/1.1
Host: dl.boxcloud.com
Accept: */*
Authorization: BoxAuth     api_key=<removed>&auth_token=<removed>

失败案例:

GET /bc/1/44d67f0a3e406676711cbd18cc657696/JolueqOGpciD6dgYhecNBoVpYxkvmYe1ZLheZor6BF4DUBIelMQTkFwYIys3nIibNIIEHUp447tBZLaXDzIbNQ,,/405f32a3d6d6e1240832ab14a08e6d99/ HTTP/1.1
Host: dl.boxcloud.com
Accept: */*
Authorization: BoxAuth     api_key=<removed>&auth_token=<removed>

我在调试想法方面碰壁了,所以我愿意接受建议。

4

1 回答 1

0

事实证明,这是 Curl 如何跨重定向维护标头的问题,再加上 dl.boxcloud.com 上的重定向 url 对 box 的授权标头的不容忍。我通过将 curl 的 FOLLOWLOCATION 设置为 false 解决了这个问题,而是在清除我的请求中的所有标头后手动跟踪重定向。

目前尚不清楚为什么这只发生在某些请求上,而不是其他请求。我也不清楚为什么后端会对这种行为如此敏感。

于 2012-11-08T20:34:56.853 回答