POST方法在npm http-server上抛出错误405

Mil*_*les 5 javascript ajax jquery node.js npm

我试图在本地http服务器上发出一个Ajax请求来运行php文件.我Error 405: method not allowed在浏览器控制台中找到了一个.

我试过一些类似问题的答案无济于事.我正在使用npm http-server来托管这个.我已经尝试在http服务器上启用CORS,但这并没有解决问题.

我可以将我的问题缩小到以下代码(使用此处给出的答案).

/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>
Run Code Online (Sandbox Code Playgroud)

/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";
?>
Run Code Online (Sandbox Code Playgroud)

我使用http-serverfrom 启动服务器npm.当我尝试发出POST请求(即单击按钮)时,我在服务器日志中收到以下错误:

[...] "POST /echo.php" Error (404): "Not found"
Run Code Online (Sandbox Code Playgroud)

echo.php文件肯定是有的-我可以GET请求相同的URL.我还在浏览器控制台中看到以下错误:

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
Run Code Online (Sandbox Code Playgroud)

当我发出GET请求时,没有错误出现,并且echo.php的代码被放置在内部<p>,正如我所期望的那样.

这是我的服务器配置问题还是只是代码问题?

更新1:

我没有太多的信息可以从http服务器中获取.这是包含执行命令的完整日志:

$ 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"
Run Code Online (Sandbox Code Playgroud)

更新2

http-serverPOST毕竟不支持请求.请参阅下面的答案......

Mil*_*les 10

我想到了!有点愚蠢,但希望这对遇到此问题的其他人有帮助.我正在浏览http-server回购并遇到以下GitHub问题.

npm http-server 不支持 POST请求.它是一个只读服务器,所以没有代码来促进这种类型的请求.

我现在正在研究支持请求的JSON服务器POST.