php - 删除调用 curl 返回 400
问题描述
我正在调试为什么每次从 Laravel 服务器收到 400 响应。
当我使用 Postman 调用时,一切正常,但是当我从 curl 脚本调用时,它每次都返回 400。
我的 curl 代码如下所示:
$endpoint = "http://sup.l/api/iasku/IA00000001-My Beat-29999-H?";
$additional_headers = "Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zdXAubG9jYWxcL2FwaVwvbG9naW4iLCJpYXQiOjE2MDE2MjI2MDQsImV4cCI6MTYwMTcwOTAwNCwibmJmIjoxNjAxNjIyNjA0LCJqdGkiOiJITFAyUEhWeEdQU1J0NWFQIiwic3ViIjoxLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.3t15l573A_EHotUq6Ud3fcGegXZh1tGsMf3i9BlrVWU";
$headers = array_merge([
'Content-Type: application/json',
'Accept: application/json',
], $additional_headers );
$options = [
CURLOPT_URL => $endpoint,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_RETURNTRANSFER => 1, // return web page
CURLOPT_HEADER => 0, // don't return headers
CURLOPT_FOLLOWLOCATION => 1, // follow redirects
CURLOPT_ENCODING => "", // handle all encodings
CURLOPT_USERAGENT => "myuser.agent", // who am i
CURLOPT_AUTOREFERER => 1, // set referer on redirect
CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
CURLOPT_TIMEOUT => 120, // timeout on response
CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
CURLOPT_SSL_VERIFYPEER => 0, // Disabled SSL Cert checks,
CURLOPT_SSL_VERIFYHOST => 0,
CURLOPT_HTTPHEADER => $headers,
];
if (count($body)) {
$options['CURLOPT_POSTFIELDS'] = json_encode($body);
}
$ch = curl_init();
curl_setopt_array( $ch, $options );
$content = curl_exec( $ch );
我的 curl 命令看起来像这样(工作正常):
curl --request DELETE \
--url http://sup.l/api/iasku/IA00000001-My%20Beat-29999-H? \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zdXAubG9jYWxcL2FwaVwvbG9naW4iLCJpYXQiOjE2MDE2MjI2MDQsImV4cCI6MTYwMTcwOTAwNCwibmJmIjoxNjAxNjIyNjA0LCJqdGkiOiJITFAyUEhWeEdQU1J0NWFQIiwic3ViIjoxLCJwcnYiOiI4N2UwYWYxZWY5ZmQxNTgxMmZkZWM5NzE1M2ExNGUwYjA0NzU0NmFhIn0.3t15l573A_EHotUq6Ud3fcGegXZh1tGsMf3i9BlrVWU'
谁能看到这里有什么问题?我应该如何调试这个?
解决方案
这里的问题是我的 URL 有空格,所以服务器无法处理它。
一旦我添加rawurlencode
了这部分 URL IA00000001-My Beat-29999-H?
,它就开始按预期工作。
推荐阅读
- sql - 解析子串
- javascript - 我的 jQuery Ajax 成功功能不起作用,不显示控制台的输出并且不验证表单
- sql - 对 SQL Server (T-SQL) 中的行集执行“for-loop”逻辑
- android - Windows 10 中的 Gradle 文件目录
- windows - 从不同的 Windows 域访问 Bitbucket Git 存储库
- mysql - MySQL 返回特定日期
- git - 在 git rebase 中仅列出我们删除、我们添加、他们删除等的文件
- python - 对 MNIST 数字数据集进行分类的 4 层感知器神经网络无法正常工作
- javascript - 如果用户单击屏幕上的任意位置,如何关闭菜单?
- python - 如果超参数调整的影响很小,我该如何改进我的 XGBoost 模型?