HTTP请求出现405 not allowed的一种解决办法经验分享
在最近对接统一支付平台的过程中,相信很多产品,包括云空间都遇到了支付成功后回调支付成功页时,报405 method not allowed的情况。这是因为支付成功后,回调的请求方式是post,而大多数产品的支付成功页是一个静态页面,要知道Apache、IIS、Nginx等绝大多数web服务器,都不允许静态文件响应POST请求。
以nginx为例,当post请求静态页面时,会直接报405
curl -X POST http://127.0.0.1:8081/test.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>
打开nginx底层的配置文件,我们可以看到这么一段,
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
rc = ngx_http_discard_request_body(r);
if (rc != NGX_OK) {
return rc;
}
可知nginx在初始化编译的时候,就默认配置了静态页面的post不支持,若要解决该问题,则有如下几种解决方案:
1、将上述配置中找到的
if (r->method & NGX_HTTP_POST) {
return NGX_HTTP_NOT_ALLOWED;
}
注释掉。。。。
重新编译即可 做到这说明了nginx可以支持静态文件的post的请求了
2、在绝大多数的情况下,还是建议使用get请求来打开静态页面,包括所有产品此前对接boss支付的时候,回调都是以get发起的请求。然而,统一支付由于还有对接别的外部系统的需求,回调请求不得不配置成post。
3、修改nginx.conf配置文件,配置忽视405错误,直接改为200正常响应:
error_page 405 =200 $uri;
或
error_page 405 =200 @405;
location @405 {
proxy_method GET;
proxy_pass http://localhost:8080;
}
proxy_pass可配置其他地址
HTTP请求出现405 not allowed的一种解决办法经验分享相关推荐
- post请求html405,nginx静态文件响应post请求,405 Not Allowed
说明: nginx不允许向静态文件提交post方式的请求,否则会返回"HTTP/1.1 405 Method not allowed"错误,至于原来还没去研究.显示如下 [root ...
- Nginx 静态页面POST 请求提示405 Not Allowed
从git上cp了一个开源的前端框架lay Ajax版本,用Nginx配置访问首页没问题 nginx配置如下: server{listen 80;server_name adminhtml.com;in ...
- Ajax跨域post请求后端无法获取登录态原因及解决办法
遇到个小坑,印象中不是第一次遇到了,记录一下:前后端分离时前端.后端不在同一个子域,跨域post请求后端无法获取登录态. 原因 后端通过cookie验证用户是否登录,跨域post不会自动携带上cook ...
- Django中ajax发送post请求,报403错误CSRF验证失败解决办法
今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了:很显 ...
- “系统资源不足,无法满足请求服务“ ,而内存够大,解决办法
重装windows系统后,如果使用了某种激活工具,那么激活系统后,电脑用过一段时间后可能会出现这种情况.此时,点击其他应用程序会出现"系统资源不足,无法满足请求服务",点击&quo ...
- Chrome浏览器同一窗口每次请求sessionId不同问题的一种解决办法分享
问题描述 最近在调试一些浏览器请求页面的时候,在其他浏览器都正常,唯独只有谷歌chrome浏览器不行! 情况1:问题的最直接现象就是每次请求在后台过滤器里通过request.getSession(). ...
- java http 中文乱码_关于java发送http请求时中文乱码的一种解决办法
在jsp中常见的乱码解决办法无外乎是关于get和post两种方式的,但只有切实地在实践中使用时才会注意或者说注重到其他方式.例如,在http请求头中传送中文参数,出现乱码,如何解决? 实际场景:使用S ...
- PS“无法完成请求,因为智能对象不能直接进行编辑”解决办法
今天用PS对图片进行编辑时,PS弹出"无法完成请求,因为智能对象不能直接进行编辑",那么怎么解决智能对象不能进行编辑的问题呢? 解决办法:格栅化图层方可编辑 也可直接在图层区,右键 ...
- 跨越请求,关于后端session会话丢失的解决办法(转载)
目前使用前后端分离的模式开发,后端提供跨域接口.前端jsonp调用,绑定数据,但是在该站点下有个人中心模块存在的情况下,服务端的session会话会被跨域请求覆盖改掉 大家都知道tomcat使用coo ...
最新文章
- 某产品经理炫耀:3年跳槽3次,月薪从8k涨到38k,跳槽涨薪最快!
- java面试第十五天
- sysbench-系统、数据库压力测试工具
- 汇编语言--sbb指令
- 解析:一种合适的数据中心建造方式有多重要?
- 2019年, VQA论文汇总
- linux mysql 5.7 双机热备_2017年5月5日 星红桉liunx动手实践mysql 主主双机热备
- 重新过一遍ASP.NET 2.0(C#)(5) - Localization(本地化,多语言)
- wav文件头字节数和文件实际字节不一致_18道MySQL经典面试题及答案,8分钟看完,你会有不一样的收获...
- php pdo操作mysql_PHP操作数据库详细(PDO)
- MyBatis-面试题
- java arraylist add时默认调用tostring_从一道例题谈Arrays.toString()与其他String的转换方法...
- 关于Oracle针对中文的md5加密
- linux安装nsenter工具,Docker 使用nsenter工具进入容器的操作
- mysql与oracle存储过程_MySQL与Oracle差异比较之五存储过程Function
- c++学习 -- #program once
- B/S架构 Web打印程序(Argox)
- 微信小程序模板订阅消息推送
- YUV422_UYVY图像格式转RGB565
- 连接HDMI出现没声音