【问题标题】:Laravel PUT Request fails : Parse Error: The response has a duplicate "Content-Length" headerLaravel PUT 请求失败:解析错误:响应具有重复的“Content-Length”标头
【发布时间】: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-TypeAccept 的值。我还指定了XMLHttpRequest 让服务器知道它是一个 XHRequest。

最后是 CSRF 代币和 Sanctum 代币(Bearer Token)。我不知道它们的值是否正确,但由于此处未显示其他请求,我知道我已使用 Fortify 进行身份验证,因此通常可能不会使用 Sanctum 令牌值(因为标准身份验证 cookie 会话由 Fortify 定义) ;对于 CSRF 令牌可能是一样的。

问题

为什么 Laravel 不简单地显示“测试”?

线索

NGinx 配置可能是此问题的根本原因。深入挖掘...

【问题讨论】:

    标签: laravel postman laravel-routing put


    【解决方案1】:

    只是因为我看不到网址。你有'/api/test'吗?

    【讨论】:

    • 是的,我要指定它
    • 我不确定是什么导致了多个 Content-Length 错误。 Postman 中是否有多个 Content-Length 标头?
    • 我没有在回复中看到它们,没有:-)
    • 您的请求中有 Content-Length 吗?编辑:确保显示隐藏的标题。
    • 我的团队中的某个人告诉我,我们的 NGINX 服务器存在配置问题,会导致此错误:) 但是请您帮助 Simon;)
    猜你喜欢
    • 1970-01-01
    • 2011-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-06
    • 2011-02-16
    • 2019-11-21
    • 1970-01-01
    相关资源
    最近更新 更多