Tomcat 和 Apache2 上使用 Spring 启动的 CORS OPTIONS 请求

Bar*_*art 5 java apache2 cors spring-boot tomcat9

我正在尝试在我的 Spring 启动应用程序上配置 CORS。我将 CrossOrigin 注释添加到我的控制器类中。

@CrossOrigin
@RestController
@RequestMapping("api/user")
public class UserApiController {
    ...
}
Run Code Online (Sandbox Code Playgroud)

当我在我的本地机器上运行它时,我得到了这些 OPTIONS 请求的响应头:

Access-Control-Allow-Credentials ?true
Access-Control-Allow-Methods ?GET
Access-Control-Allow-Origin ?http://www.test.be
Access-Control-Max-Age ?1800
Allow ?GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Cache-Control ?no-cache, no-store, max-age=0, must-revalidate
Content-Length ?0
Date ?Wed, 28 Mar 2018 09:13:33 GMT
Expires ?0
Pragma ?no-cache
Vary ?Origin
X-Content-Type-Options ?nosniff
X-Frame-Options ?DENY
X-XSS-Protection ?1; mode=block
Run Code Online (Sandbox Code Playgroud)

我在 Tomcat 服务器上部署了这个应用程序,在 Linux 上运行的 Apache2 服务器后面。当我在那里做同样的请求时,我得到了这个:

Allow ?GET,HEAD
Cache-Control ?no-cache, no-store, max-age=0, must-revalidate
Connection ?Keep-Alive
Date ?Wed, 28 Mar 2018 09:42:42 GMT
Expires ?0
Keep-Alive ?timeout=5, max=100
Pragma ?no-cache
Server ?Apache/2.4.18 (Ubuntu)
Transfer-Encoding ?chunked
X-Content-Type-Options ?nosniff
X-Frame-Options ?DENY
X-XSS-Protection ?1; mode=block
Run Code Online (Sandbox Code Playgroud)

这就是我配置 Apache2 来代理 Tomcat 的方式

<Proxy *>
Order deny,allow
Allow from all
</Proxy>
#
ProxyRequests Off
ProxyPreserveHost On
#
#
ProxyPass /app  http://localhost:8080/my_app
ProxyPassReverse  /app  http://localhost:8080/my_app
Run Code Online (Sandbox Code Playgroud)

两个请求都返回了 200 OK 状态代码,但在服务器版本上我没有得到 Access-Control-Allow 标头。我在 Allow 标头中只看到 GET,HEAD。为什么 Apache2 不允许 OPTIONS?我该如何解决?