如何在 Spring Framework 4.2/Boot 1.3 中根据 Origin HTTP 请求标头设置动态 Access-Control-Allow-Origin?

Posted

技术标签:

【中文标题】如何在 Spring Framework 4.2/Boot 1.3 中根据 Origin HTTP 请求标头设置动态 Access-Control-Allow-Origin?【英文标题】:How to set dynamic Access-Control-Allow-Origin based on Origin HTTP request header in Spring Framework 4.2/Boot 1.3? 【发布时间】:2015-12-24 04:45:36 【问题描述】:

Spring 4.2 has CORS support,但是必须手动设置允许的来源。与身份验证结合使用时会出现问题,因为Access-Control-Allow-Origin: * 不支持身份验证。

如何自动设置?对 Ionic/Cordova 客户端非常有用。

即如果客户端发送Origin: assets-library://whatever/,那么服务器将发送Access-Control-Allow-Origin: assets-library://whatever/

功能请求:https://jira.spring.io/browse/SPR-13511

【问题讨论】:

我在JIRA问题的cmets中回答了你,这个应该已经支持了。 【参考方案1】:

通过 Spring Boot 的“默认”,Spring 4.2 在使用 @CrossOriginaddCorsMappings() 时确实支持我描述的场景。

不是默认的是使用Sébastien's technique described here(我已经更新了答案)。必须注意:

config.setAllowCredentials(true);

因为CorsConfiguration真实默认值是null,它被视为false

【讨论】:

以上是关于如何在 Spring Framework 4.2/Boot 1.3 中根据 Origin HTTP 请求标头设置动态 Access-Control-Allow-Origin?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Eclipse 中查看 Spring Framework Javadoc?

如何在 Spring 4.2 中启用 CORS 过滤器

Entity Framework 4.2 模型生成异常

我如何说服 spring 4.2 将 OPTIONS 请求传递给控制器

如何使用 Spring Framework 中的 JdbcTemplate 类执行 INSERT 语句

如何在 Spring Framework 中发送和接收带参数的 ajax 请求?