我有一个使用Nginx服务的网站。我创建了一个非常简单的带有p标记的网页,以显示文件test.html的内容。我有两个按钮,一个按钮使用$ .ajax进行GET请求,另一个按钮使用$ .post进行POST请求。
GET请求工作正常,文件test.html的内容显示在我的p标签中。但是,当我尝试POST到同一文件时,控制台中出现错误:“无法加载资源:服务器响应状态为405(不允许)。” POST请求非常简单,直接取自W3Schools.com-https://www.w3schools.com/JQuery/jquery_ajax_get_post.asp上的示例。所以我感到困惑。
我试图阅读并理解405错误可能意味着什么。大概意味着这URL不支持POST请求。但是如何使它得到支持?
<p id="content-from-ajax"></p>
<button id="get-content-btn">Get Content</button>
<button id="post-something-btn">Post something</button>
<script type="text/javascript">
$("#get-content-btn").click(function() {
$.ajax({type: "GET",
url: "test.html",
success: function(result) {
$("#content-from-ajax").html(result);
alert("GET successful");
}
});
});
$("#post-something-btn").click(function(){
alert("GRRRR");
$.post("test.html",
{
name: "Donald Duck",
city: "Duckburg"
},
function(data, status){
alert("something worked");
});
});
</script>
答案 0 :(得分:0)
对于POST请求以访问Web服务器上托管的资源,您将需要一个应用程序服务器。示例包括适用于PHP的Laravel,适用于Java的Spring和适用于JavaScript的Node。
许多应用程序服务器要求您明确指定特定端点可以接收的请求类型,这在学习新的Web应用程序框架时可能会造成混淆,因为GET请求通常是默认请求。
尽管POST请求必须由应用程序服务器处理,但不必成为您的托管服务器。因此,您可以通过POST请求访问公共API(取决于您使用的API和端点),而无需在应用程序服务器上托管站点。因此,如果这个项目纯粹是教育性的,那么这是使用POST请求进行测试的最佳方法,而无需麻烦自己进行配置。