【问题标题】:501 on PUT requestPUT 请求时出现 501
【发布时间】:2021-01-29 05:20:49
【问题描述】:

我们有一个 UI 代码调用我们的后端使用 https 协议执行 GET 和 PUT。 (即 GET /api/data 和 PUT /api/data) 在后端,我们为此路径定义了 GET 和 PUT 处理程序。 不知何故,GET 工作正常,但对于 PUT,我们得到了 501。

需要注意的一点是,我们确实为此应用设置了 Akamai。 之前,Akamai,当 UI 直接使用主机对话时,我认为它运行良好。 但是现在使用这个来自 Akamai 的公共主机,PUT 似乎不像以前那样工作了。

最初,我看到了这个:

并决定添加以下内容: res.setHeader('Referrer-Policy', 'same-origin');

现在我看到了:

知道可能发生了什么或我可能需要设置什么才能使 GET 和 PUT 都能正常工作吗?

【问题讨论】:

    标签: node.js http https http-headers


    【解决方案1】:

    我之前也遇到过类似的问题。您很可能有一个 Web.Config 或类似的东西阻止了 PUT 请求。

    例如,在 Azure 中的一些基于 PHP 的后端中,我必须添加:(只有 GET、POST,因此其他请求被阻止)

    <handlers>
      <add name="PHP73_via_FastCGI" path="*.php" verb="GET, PUT, POST, DELETE, HEAD" modules="FastCgiModule" scriptProcessor="D:\Program Files (x86)\PHP\v7.3\php-cgi.exe" resourceType="Either" requireAccess="Script" />
    </handlers>
    

    【讨论】:

    • 原来是 Akamai 设置问题。默认情况下,使用我们正在使用的某些脚本启用了 GET 和 POST,但没有启用 PUT,这导致 PUT 出现 501。谢谢。