如何打印错误 405 方法不允许用户使用

Posted

技术标签:

【中文标题】如何打印错误 405 方法不允许用户使用【英文标题】:How to print Error 405 Method not allowed to users 【发布时间】:2014-07-06 04:46:10 【问题描述】:

我正在编写 ios UDID 检索脚本,遗憾的是遇到了一个小问题。 如您所知,要检索 iOS UDID,用户必须在 iOS 设备上安装配置文件。之后,设备响应配置文件中定义的链接。如果用户直接打开检索链接,将得到错误 405 Method not allowed。与以下链接相同: http://get.udid.io/retrieve/ 和 http://license.if0rce.com/connect/retrieve

/retrieve/index.php 中的代码是:

<?php
$data = file_get_contents('php://input');
file_put_contents("data.txt", $data);
?>

我可以通过添加来设置自定义错误:

if ($_SERVER['REQUEST_METHOD'] !== 'POST') 
    header("HTTP/1.0 405 Method Not Allowed");
exit(); 

但这不是专业的方式。我希望用户得到与上述链接完全相同的错误。

有什么想法吗?

感谢您的帮助:)

【问题讨论】:

你一定是在开玩笑,用information-retrieval标记this ...(已删除) 请注意,根据 RFC 2616,405 响应“必须包含 Allow 标头,其中包含所请求资源的有效方法列表。” 【参考方案1】:

Apache 未设置为针对 PHP 设置状态代码处理错误文档。 在'custom-msg.php'中你可以添加你想显示的消息。

if ($_SERVER['REQUEST_METHOD'] == 'GET') 
header("HTTP/1.0 405 Method Not Allowed"); 
include 'custom-msg.php';
exit(); 

【讨论】:

谢谢。他们做同样的工作吗? 您还必须包含带有 405 响应的 Allow 标头(第 14.7 节):w3.org/Protocols/rfc2616/rfc2616-sec14.html 为什么不直接使用http_response_code(405) 而不是header("HTTP/1.0 405 Method Not Allowed")

以上是关于如何打印错误 405 方法不允许用户使用的主要内容,如果未能解决你的问题,请参考以下文章

discord.errors.HTTPException:405 方法不允许(错误代码:0):405:方法不允许

CORS 预检的响应是 405(不允许的方法)错误

设置授权标头时,角度显示错误 405 方法不允许

Web Api - 不允许使用 Catch 405 方法

Azure应用服务错误405 - 无法完成请求。 (不允许的方法)

Flutter - 错误:不允许使用 HTTP 405 方法