webapi跨域的请求屏蔽问题

最近在做基于net core 3.1的跨域问题,发现在进行put请求时notice预请求已通过,但是正式请求被屏蔽,返回405 method not allow.

method已经在startup中配置完毕,已允许put请求,但是还是不能正常执行,目前完全不知道问题在哪,请问各位谁有比较好的解决方案?

以下是配置的代码和状况截图

请大家帮忙给看看吧,提前谢谢诸位大神

回答

首先感谢大家的多多关注,感谢以上所有的答案,经过仔细测试,目前以上四个解决方案都无法解决无法跨域发送put请求的方法,并且经过测试,无论是手动编写代码配置跨域亦或是使用CORS中间件都无法配置跨域请求能够通过put请求。主要还是有以下前提,首先,这里要发送的get请求并不是简单请求,所以每次请求前都需要通过option请求获取跨域确认请求,之后在跨域确认通过后,发起第二次(即实际发起put请求时)put 请求谓词被自动拦截,至今未找到合适的解决方式,不知道是请求受缓存策略还是受跨域所限制。

这个问题的最后解决方案:采用post请求替换put请求,同时webapi的设置放弃了restful的风格,采用自定义的I(Index)C(Create)R(Read)U(Update)D(Delete)E(Expand)方式实现通过Webapi对数据库数据的缓存和持久化方案,同时调用WebApi时更加清晰明了,请求谓词规划更加清晰,对单个数据库表的数据操作方式也更加一致,前端的调用也更加方便。虽然没有解决遇到的问题,但是通过迂回策略反而使整个webapi 项目更加整洁。

最后仍然向所有给予回答的参与者以极大的感谢,这个问题也会持续关注,如有发现新的更好的解决方案必定会同大家一同分享。

以上是 webapi跨域的请求屏蔽问题 的全部内容, 来源链接: utcz.com/a/34822.html

回到顶部