Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求,否则会返回“HTTP/1.1 405 Method not allowed”错误。
例1:用Linux下的curl命令发送POST请求给Apache服务器上的HTML静态页
[root@new-host ~]# curl -d 1=1 http://www.sohu.com/index.html
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>405 Method Not Allowed</TITLE>
</HEAD><BODY>
<H1>Method Not Allowed</H1>
The requested method POST is not allowed for the URL /index.html.<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at www.sohu.com Port 80</ADDRESS>
</BODY></HTML>
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>405 Method Not Allowed</TITLE>
</HEAD><BODY>
<H1>Method Not Allowed</H1>
The requested method POST is not allowed for the URL /index.html.<P>
<HR>
<ADDRESS>Apache/1.3.37 Server at www.sohu.com Port 80</ADDRESS>
</BODY></HTML>
例2:用Linux下的curl命令发送POST请求给Nginx服务器上的HTML静态页
[root@new-host ~]# curl -d 1=1 http://blog.s135.com/tech/index.htm
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/0.5.35</center>
</body>
</html>
<html>
<head><title>405 Not Allowed</title></head>
<body bgcolor="white">
<center><h1>405 Not Allowed</h1></center>
<hr><center>nginx/0.5.35</center>
</body>
</html>
但在有些应用中,需要使静态文件能够响应POST请求。
对于Nginx,可以修改nginc.conf配置文件,改变“405错误”为“200 ok”,并配置location来解决,方法如下:
server
{
listen 80;
server_name domain.s135.com;
index index.html index.htm index.php;
root /opt/htdocs;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
error_page 405 =200 @405;
location @405
{
root /opt/htdocs;
}
location ~ .*.php?$
{
include conf/fcgi.conf;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
}
}
{
listen 80;
server_name domain.s135.com;
index index.html index.htm index.php;
root /opt/htdocs;
if (-d $request_filename)
{
rewrite ^/(.*)([^/])$ http://$host/$1$2/ permanent;
}
error_page 405 =200 @405;
location @405
{
root /opt/htdocs;
}
location ~ .*.php?$
{
include conf/fcgi.conf;
fastcgi_pass 127.0.0.1:10080;
fastcgi_index index.php;
}
}
相关推荐
当尝试使用POST方法向静态文件发送请求时,服务器会返回一个HTTP状态码405(Method Not Allowed),意味着所请求的方法(这里是POST)不被服务器支持。 405错误的示例可以通过curl命令演示。例如,在Linux环境下,...
405(Method Not Allowed)表示请求方法(如GET、POST)不被允许。406(Not Acceptable)说明服务器无法提供满足请求的资源格式。408(Request Timeout)表示服务器等待请求超时。409(Conflict)表示请求与当前资源...
tomcat解决跨域访问问题,具体配置如下: 1、修改tomcat下的Conf/web.xml文件,在该文件内容中新增以下配置,注意,若该web.xml中存在其它filter,则需要将该filter放在所有filter前面; <filter-name>...
3. **设置静态文件和媒体文件路径**:Django区分静态文件(如CSS、JavaScript等)和媒体文件(如用户上传的文件)。我们需要为这些文件指定目录。 ```python MEDIA_URL = '/media/' MEDIA_ROOT = os.path.join...
一个Javaservlet具有一个生命周期,这个生命周期定义了一个Servlet如何被载入并被初始化,如何接收请求并作出对请求的响应,如何被从服务中清除。Servlet的生命周期被javax.servlet.Servlet这个接口所定义。 所有的...
- `405 Method Not Allowed`:请求的方法(如GET、POST)对请求的资源不适用。 - `500 Internal Server Error`:服务器遇到了无法处理的错误。 3. **SQL的内连接、左连接和右连接**: - **内连接(Inner Join)*...
使用大家说的以下配置,验证无效,跨域问题仍然存在 add_header 'Access-Control-Allow-Origin' '*'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Methods' 'GET,...
- **405 Method Not Allowed**:请求方法(如GET、POST)不受支持。 - **408 Request Timed Out**:服务器等待客户端完成请求超时。 - **411 Content Length Required**:服务器需要请求包含Content-Length头。 - **...
http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed) return } body, err := ioutil.ReadAll(r.Body) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return ...
此外,如果在请求JSON文件时出现405错误(Method Not Allowed),这通常意味着服务器不允许使用当前请求方法(如POST)。在这种情况下,我们需要确保请求方法设置为GET,因为`$.getJSON()`默认使用GET请求。如果仍然...
2. **设置`settings.py`**:在项目的`settings.py`文件中,我们需要配置文件上传相关的几个关键项,包括允许的主机、媒体文件的存储路径以及静态文件的目录等。 ```python ALLOWED_HOSTS = ['127.0.0.1', '...
如果尝试通过POST或其他非GET请求访问这个路由,Flask将会返回405 Method Not Allowed错误。 #### 四、路由查找顺序 当存在多个路由定义相同路径时,Flask会按照定义的顺序来决定调用哪个处理函数。例如: ```...
- **视图**:视图是Django应用的核心部分,负责处理请求并返回响应。视图可以是函数视图(FBV)或类视图(CBV)。 #### 路由配置 - **函数视图**: ```python # 在dongapp2/views.py from django.shortcuts ...
return HttpResponse("Method not allowed") def list(request): template_var = {} photos = Img.objects.all() template_var['pics'] = photos return render_to_response('list.html', template_var, ...
<form method="post" action="http://localhost:5000/up_photo" enctype="multipart/form-data"> <input type="file" size="30" name="photo"/> ;"/> 提交信息" class="button-new" style="margin-top:15...