POST 方法在 npm http-server 上抛出错误 405
Posted
技术标签:
【中文标题】POST 方法在 npm http-server 上抛出错误 405【英文标题】:POST method throws error 405 on npm http-server 【发布时间】:2017-02-02 11:47:45 【问题描述】:我正在尝试发出 Ajax 请求以在本地 http 服务器上运行 php 文件。我在浏览器控制台中收到Error 405: method not allowed
。
我尝试了一些类似问题的答案,但无济于事。我正在使用 npm http-server 来托管它。我已经尝试在 http-server 上启用 CORS,但这并不能解决问题。
我可以将我的问题缩小到以下代码(使用给出的答案here)。
/test.html:
<html>
<head>
<title>Button</title>
<meta charset="utf-8">
<!-- jQuery -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>
<button type="button">Click Me</button>
<p></p>
<script type="text/javascript">
$(document).ready(function()
$("button").click(function()
$.ajax(
method: 'POST',
url: 'echo.php',
success: function(data)
alert(data);
$("p").text(data);
);
);
);
</script>
</body>
</html>
/echo.php:
<?php
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Content-Type, Accept');
echo "HELLO WORLD";
?>
我使用来自npm
的http-server
启动服务器。当我尝试发出 POST 请求(即单击按钮)时,我在服务器日志中收到以下错误:
[...] "POST /echo.php" Error (404): "Not found"
echo.php
文件肯定存在——我可以向同一个 url 发出 GET
请求。我还在浏览器控制台中看到以下错误:
POST http://127.0.0.1:8080/echo.php 405 (Method Not Allowed)
send @ jquery.min.js:4
ajax @ jquery.min.js:4
(anonymous function) @ test.html:15
dispatch @ jquery.min.js:3
q.handle @ jquery.min.js:3
当我发出GET
请求时,没有出现任何错误,并且正如我所料,echo.php 的代码放在<p>
内。
这是我的服务器配置问题还是只是代码问题?
更新 1:
我无法从 http-server 获得太多信息。这是包含执行命令的完整日志:
$ http-server --cors -p 8080
Starting up http-server, serving ./
Available on:
http://127.0.0.1:8080
Hit CTRL-C to stop the server
[Sat Sep 24 2016 16:47:14 GMT-0400 (EDT)] "GET /test.html" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36"
[Sat Sep 24 2016 16:47:19 GMT-0400 (EDT)] "POST /echo.php" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.101 Safari/537.36"
[Sat Sep 24 2016 16:47:19 GMT-0400 (EDT)] "POST /echo.php" Error (404): "Not found"
更新 2
http-server
毕竟不支持POST
请求。答案见下文...
【问题讨论】:
当您尝试 Access-Control-Allow-Methods:* 时会发生什么? 我应该打印一些http-server的日志吗?我感觉是服务器配置问题。 是的,我认为这会有所帮助 当我将它设置为通配符时,我看到了同样的问题。 @HansGerber - 就日志而言,我无法从 http-server 中获得太多信息。 This page 概述了默认设置。我希望能提供更多信息。 【参考方案1】:我想通了!有点愚蠢,但希望这对遇到此问题的其他人有所帮助。我正在查看http-server
回购并遇到以下GitHub issue。
npm
http-server
不支持 POST
请求。它是一个只读服务器,因此没有代码来促进这种类型的请求。
我现在正在研究JSON-server,它确实支持POST
请求。
【讨论】:
我遇到了同样的问题。那谢谢啦!我现在尝试了 json-server,但是当我想POST
时得到 404。你有同样的问题吗?
非常感谢!我失去了昨天的一切,以为它在我身边!但是,在尝试 JSON 服务器时,我也会收到 404 Not Found。看起来我可能不得不使用成熟的 XAMPP,即使它完全满足我的需求。以上是关于POST 方法在 npm http-server 上抛出错误 405的主要内容,如果未能解决你的问题,请参考以下文章
npm http-server 下载 index.html 而不是服务