我正在尝试发出Ajax请求以在本地http服务器上运行php文件。我在浏览器控制台中收到Error 405: method not allowed
。
我尝试过一些类似问题的答案但无济于事。我正在使用npm http-server来托管这个。我已经尝试在http服务器上启用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";
?>
我使用http-server
中的npm
启动服务器。当我尝试发出POST请求(即单击按钮)时,我在服务器日志中收到以下错误:
[...] "POST /echo.php" Error (404): "Not found"
echo.php
文件肯定存在 - 我可以向同一个网址发出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>
内,正如我所料。
这是我的服务器配置问题还是只是代码问题?
我没有太多的信息可以从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"
http-server
不支持POST
个请求。请参阅下面的答案......
答案 0 :(得分:10)
我明白了!有点愚蠢,但希望这对遇到此问题的其他人有帮助。我正在查看npm
回购邮件并遇到以下GitHub issue。
http-server
POST
不支持 POST
请求。它是一个只读服务器,所以没有代码来促进这种类型的请求。
我现在正在研究支持this
请求的JSON-server。