问题表现
同一个项目请求同一个服务时,Get和Post请求正常,但是Put和Delete一直报跨域错误的问题
1 | Access to XMLHttpRequest at 'http://127.0.0.1:8011/api/organization' from origin 'http://localhost:9527' has been blocked by CORS policy: Method PUT is not allowed by Access-Control-Allow-Methods in preflight response. |
解决方案
根据问题描述,很清楚是PUT
方法不行,于是去查看服务端的跨域中间件, 发现没有在Header中明确指定Access-Control-Allow-Headers
,于是添加Allow Methods的设置,, 以下是完整的跨域中间件:
1 | package middleware |
反思
问题本身没有什么,但有意思的是过程,因为我先写的服务端,且确定加了跨域的中间件,且在写前端的时候,之前常用的Get和Post访问都没有出现跨域的问题,所以问题出现时,没有第一时间联系到时服务端的问题。
网上查了些信息,整体描述是因为Get和Post的方法是默认的,所以及时没有明确设置也可以通过,但是其他的方法就需要显示的设置。