405请求报错

 在手端请求某个接口的时候,请求http://10.4.87.179/fleaf/services/lexin/clazz/notice/12098918/remindReceipt/pm 
报错:
Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: method not allowed (405)" UserInfo={NSLocalizedDescription=Request failed: method not allowed (405), NSErrorFailingURLKey=http://10.4.87.179/fleaf/services/lexin/clazz/notice/12098918/remindReceipt/pm 

, com.alamofire.serialization.response.error.data=<>, com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x111189170> { URL: http://10.4.87.179/fleaf/services/lexin/clazz/notice/12098918/remindReceipt/pm 

 } { Status Code: 405, Headers {
    Allow =     (
        "POST,GET,OPTIONS,HEAD"
    );
    "Content-Length" =     (
        0
    );
    Date =     (
        "Mon, 10 Sep 2018 02:39:03 GMT"
    );
    Server =     (
        "Apache-Coyote/1.1"
    );
} }} 
 
查看接口是get方法,而手端调用使用的是post方式
 
将手端调用接口方式改成get方式请求即可,或者将接口请求方式改为post,(保持一致即可)

转载于:https://www.cnblogs.com/zhouj850/p/9618171.html

### HTTP 请求报错 405 的解决方案 HTTP 状态码 `405 Method Not Allowed` 表示客户端尝试使用服务器配置中未启用的 HTTP 方法访问某个资源。以下是可能的原因及其对应的解决方案: #### 原因一:请求方法不被支持 如果服务器上的目标资源未配置为接受特定的 HTTP 方法(如 POST 或 PUT),则会触发此错误。 **解决方案** 1. **确认 API 接口文档中的方法** 检查接口文档,确保调用的是正确的 HTTP 方法[^1]。 2. **修改前端代码以匹配后端支持的方法** 如果后端仅支持 GET 而前端发起了 POST 请求,则需调整前端逻辑以发送正确的请求类型[^2]。 --- #### 原因二:Web 服务器配置问题 某些情况下,可能是 Web 服务器(如 Apache、Nginx 或 IIS)未正确配置允许的 HTTP 方法。 **解决方案** 1. **IIS 配置** 打开 IIS 管理器,在对应网站的属性中,进入“主目录 -> 配置”选项卡,添加或更新所需的 MIME 类型以及允许的 HTTP 动词列表。 2. **Apache/Nginx 配置** 编辑 `.htaccess` 文件或 Nginx 配置文件,确保启用了所需的方法。例如,在 Nginx 中可以这样配置: ```nginx location /api/ { allow_methods GET POST PUT DELETE; } ``` --- #### 原因三:Servlet 过滤器拦截了非法请求Java Servlet 应用程序中,可能会有自定义过滤器捕获并拒绝不符合条件的请求。 **解决方案** 检查是否存在类似的代码片段,它会在接收到非预期方法时主动抛出 `405` 错误: ```java private void sendMethodNotAllowed(HttpServletRequest req, HttpServletResponse resp, String msg) throws IOException { String protocol = req.getProtocol(); if (!protocol.equals("HTTP/0.9") && !protocol.equals("HTTP/1.0")) { resp.sendError(405, msg); } else { resp.sendError(400, msg); } } ``` - 修改该部分逻辑,或者扩展其判断条件以适应新的业务需求。 --- #### 原因四:跨域资源共享 (CORS) 设置不当 当涉及跨域请求时,浏览器会对预检请求(OPTIONS 方法)做出额外的安全校验。如果没有适当地处理这些请求,也可能引发 `405` 错误。 **解决方案** 1. 在服务端设置 CORS 头部信息,允许必要的域名和方法。例如,在 Spring Boot 中可加入以下配置: ```java @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); config.addAllowedOrigin("*"); config.addAllowedHeader("*"); config.addAllowedMethod("*"); source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } ``` 2. 对于 IIS 用户,按照以下步骤操作[^3]: - 添加 HTTP 响应头部 `"Access-Control-Allow-Methods"` 和 `"Access-Control-Allow-Origin"`。 - 示例值分别为 `"GET,POST,PUT,DELETE"` 和 `"*"(表示不限制来源)"。 --- #### 总结 以上列举了几种常见场景下的解决思路。具体实施前建议先排查日志记录,定位实际发生的异常位置后再采取相应措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值