http请求 405错误 方法不被允许 (Method not allowed)

由于自己疏忽,导致请求错误405,然后前端数据传输没错,百度大都说跟post提交方式有关,改成get还是报错,检查才知道,controller中忘记写@requestMapping("/XXX"),hahhahah 被自己粗心蠢哭了,,,从而导致没有没有方法被加载到,方法不予许,下面是相关405错误的解释
其实当网页页面出现405错误,则说明用来访问本页面的 HTTP 谓词不被允许(方法不被允许),平常不是用户的问题,并且网页程序上的问题,当遇到这个问题,与用户没多大关系,需要网站管理员来解决。

405 Request method GET not supported(405-用来访问本页面的HTTP方法不被允许)这是因为浏览器访问网站是GET请求,后端服务器本地址只接受POST请求。
 这里用的是post提交方式,所以后台应该用postMapping或者RequertMapping都可以
 在这里插入图片描述我上网查阅了资料才看到,上面用成Getmapping然后改成下面请求方式就好了
 在这里插入图片描述
 这是我的错误过程,希望大家别犯着小错误,希望能够帮助到你

### HTTP 405 Method Not Allowed 错误原因 HTTP状态码`405 Method Not Allowed`表示服务器已理解请求,但是拒绝接受它,并且会通过客户端的任何行为(例如使用同的传输协议、修改访问权限等)来改变这一事实。当客户端尝试使用服务端允许方法发送请求时就会触发此错误[^1]。 对于`.NET Core`应用程序,在新环境中部署后遇到PUT或DELETE请求返回`405 Method Not Allowed`的情况通常是因为Web服务器配置当或者应用本身未正确设置路由规则所致[^2]。 ### 解决方案 #### 配置IIS支持多种HTTP动词 为了使IIS能够接收并处理除GET/POST之外更多的HTTP方法如PUT, DELETE等操作,需要确保启用了对应的模块: - 安装URL Rewrite Module 和 WebDAV Publishing (如果适用)[^1] 另外还需确认web.config文件中的settings节点是否允许这些额外的动作: ```xml <configuration> <system.webServer> <!-- ... --> <handlers> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_32bit"/> <remove name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"/> <remove name="ExtensionlessUrlHandler-Integrated-4.0"/> <add name="ExtensionlessUrlHandler-ISAPI-4.0_32bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness32" responseBufferLimit="0"/> <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0"/> <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0"/> </handlers> </system.webServer> </configuration> ``` 以上配置确保了无扩展名URL处理器可以响应所有的HTTP动作。 #### 修改ASP.NET Core 应用程序 检查控制器内的属性装饰是否有误,比如应该为特定的操作指定合适的HttpMethod特性标签(`[HttpGet], [HttpPost], [HttpPut], [HttpDelete]`)是默认全部开放给GET请求: ```csharp // 正确的做法是指定具体允许的方式 [HttpPut("{id}")] public IActionResult UpdateItem(int id, [FromBody] Item item) { // 更新逻辑... } ``` 最后重启网站让更改生效即可解决问题。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值