405 跨域问题的解决

 
在新同事的建议下,我们开发的接口统一改为符合 restful 规范的形式。
尝试改造后,前端同事以 DELETE 方式请求接口时,出现了 405 (跨域)错误。
 
由于在之前的工程中有同事解决过这个问题,所以跟他请教了一下,得到的答案是:
“在原工程中,搜索 ‘<filter-name>CorsFilter</filter-name>’ 就行 ”。
 
按照他的提示在原工程的 web.xml 文件中找到了相关配置,但后来发现当前工程中也有相同的配置。
 
在详细看了配置信息之后,我做了如下的尝试:
在其中的
 
<init-param>
  <param-name>cors.allowed.methods</param-name>
  <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
 
PUT 之后加上 DELETE:
 
<init-param>
  <param-name>cors.allowed.methods</param-name>
  <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE,PATCH</param-value>
</init-param>

 

问题解决
 
 
以下是配置详情:

<filter>
        <filter-name>CorsFilter</filter-name>
        <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
        <init-param>
            <param-name>cors.allowed.origins</param-name>
            <param-value>*</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.methods</param-name>
            <param-value>GET,POST,HEAD,OPTIONS,PUT,DELETE,PATCH</param-value>
        </init-param>
        <init-param>
            <param-name>cors.allowed.headers</param-name>
            <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
        </init-param>
        <init-param>
            <param-name>cors.exposed.headers</param-name>
            <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
        </init-param>
        <init-param>
            <param-name>cors.support.credentials</param-name>
            <param-value>true</param-value>
        </init-param>
        <init-param>
            <param-name>cors.preflight.maxage</param-name>
            <param-value>10</param-value>
        </init-param>
    </filter>

 

 
 
posted @ 2018-03-18 19:26  stoneBlog  阅读(868)  评论(0编辑  收藏  举报