码迷,mamicode.com
首页 > 数据库 > 详细

ABP PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow-Origin' header is present on the requested resource

时间:2017-12-23 21:43:19      阅读:1620      评论:0      收藏:0      [点我收藏+]

标签:iis   排除   模块   web   mat   nal   html   ati   use   

先请检查是否是跨域配置问题,请参考博客:http://www.cnblogs.com/donaldtdz/p/7882225.html

一、问题描述

ABP angular前端部署后,查询,新增都没问题,但更新和删除会报一个跨域问题的错误,详细信息如下:

PUT http://localhost:8060/api/services/app/User/Update 405 (Method Not Allowed)

users:1 Failed to load http://localhost:8060/api/services/app/User/Update: No ‘Access-Control-Allow-Origin‘ header is present on the requested resource. Origin ‘http://localhost:4200‘ is therefore not allowed access. The response had HTTP status code 405.

技术分享图片

二、问题分析诊断

首先检查跨域配置是没有问题的,查询数据和新增数据的请求也是没有问题的,只出现在修改和删除数据。通过了解ABP Web API请求头设置,查询是GET请求,新增是POST请求,而修改是PUT请求,删除是DELETE请求,IIS服务通常都是支持get和post请求的,由此分析推断很有可能是IIS不支持put和delete谓词请求。

通过百度了一遍对IIS进行新添加谓词put和delete。 点击部署应用 -> 出来程序映射 –> aspNetCore(由于我部署是.Net Core 程序,所以选择AspNetCoreModule模块)

 技术分享图片

技术分享图片

双击打开

技术分享图片

技术分享图片

通过检查,aspNetCore本身是支持全部谓词的,现在肯定是和这个谓词有关,但需要更详细的错误信息。

既然不错信息是跨域,我们先排除跨域因数的影响,现在看到的跨域错误信息很有可能是个假象,我们通过swagger对web API进行调试。

调试需要配置授权token,请参考博客:http://www.cnblogs.com/donaldtdz/p/7892865.html

先测试接口:/api/services/app/User/GetAll

 技术分享图片

测试结果:通过 200

 技术分享图片

再测试接口:/api/services/app/User/Delete

 技术分享图片

测试结果:

HTTP 错误 405.0 - Method Not Allowed

无法显示您正在查找的页面,因为使用了无效方法(HTTP 谓词)。

 技术分享图片

将response body 用保存用浏览器打开如下:

 技术分享图片

查看详细错误信息,我们开始的推断是没有问题的,最后也尝试了很多方法,最终问题核心在于 模块WebDAVModule

三、解决方案

在启用或关闭Windows功能 –> Internet Information Services 关闭WebDAV发布

 技术分享图片

验证:修改用户成功

 技术分享图片

技术分享图片

 

ABP PUT、DELETE请求错误405.0 - Method Not Allowed 因为使用了无效方法(HTTP 谓词) 引发客户端错误 No 'Access-Control-Allow-Origin' header is present on the requested resource

标签:iis   排除   模块   web   mat   nal   html   ati   use   

原文地址:http://www.cnblogs.com/donaldtdz/p/8094300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!