【发布时间】:2021-06-09 07:12:40
【问题描述】:
上下文
我使用 Postman 向我的 Laravel API 发送一个 PUT HTTP 请求。
预期行为
邮递员应显示“测试”作为响应。
实际行为
Postman 显示错误“解析错误:响应具有重复的“Content-Length”标头”作为响应。
路线
我在api.php 中定义了以下路线:
Route::put('/test', function(Request $request) {
return 'test';
})->name('test');
这条路线存在:确实,php artisan route:list 返回以下...
放 | api/测试 |测试 |关闭 |接口
请求
在 Postman 中,我定义了以下请求(URL 格式为:https://<laravel site>/api/test):
我尝试过的事情
根据 Laravel 文档,当指向 PUT 路由的 HTML 表单与 POST 一起发送时,应该发送 _method = PUT,因为它与 PUT 不兼容。通常在这里,由于我使用JSON,因此并非如此。但即使它可能没用,我还是把它说出来,以防我错了。
此外,我已明确指定application/json 作为Content-Type 和Accept 的值。我还指定了XMLHttpRequest 让服务器知道它是一个 XHRequest。
最后是 CSRF 代币和 Sanctum 代币(Bearer Token)。我不知道它们的值是否正确,但由于此处未显示其他请求,我知道我已使用 Fortify 进行身份验证,因此通常可能不会使用 Sanctum 令牌值(因为标准身份验证 cookie 会话由 Fortify 定义) ;对于 CSRF 令牌可能是一样的。
问题
为什么 Laravel 不简单地显示“测试”?
线索
NGinx 配置可能是此问题的根本原因。深入挖掘...
【问题讨论】:
标签: laravel postman laravel-routing put