- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 Spring Boot Rest 应用程序,我需要允许 CORS 请求。
请求使用公共(public)路径<host>:<port>/api/...
到目前为止我只有两个资源:
package my.controllers;
@RestController
@RequestMapping(path="/", produces="application/json")
public class DataController {
@GetMapping("/")
public ApiResponse<Map<String, Object>> getValues() {
// ...
}
@GetMapping("/sub")
public ApiResponse<String> getValuesSub() {
// ...
}
以下是来自运行于 http://localhost:3000/
的 Javascript 客户端的两个示例请求。 :
fetch('http://localhost:2001/api/').then(/* ... */);
fetch('http://localhost:2001/api/sub')).then(/* ... */);
如果我添加@CrossOrigin(origins = "*")
对 Controller 进行注释,CORS 请求工作正常;如果我替换它实现 WebMvcConfigurer.addCorsMappings()
不过:
@ComponentScan(basePackages={ "my.controllers" })
@Configuration
public class WebappConfig implements WebMvcConfigurer {
// ...
@Override
public void addCorsMappings(CorsRegistry registry) {
LogManager.getLogger(getClass()).info("CORS settings");
registry.addMapping("/api/**").allowedOrigins("*").maxAge(3600);
}
CORS 请求失败,我得到(在 Firefox 中,Chrome 显示类似的错误消息):
CORS header 'Access-Control-Allow-Origin' missing
我看到了日志条目,因此肯定会调用该方法。
我见过其他提到 Spring Security 或 Spring Data 的问题(我没有使用),所以这里是我的依赖项列表,以防我遗漏了什么:
在不使用 @CrossOrigin
的情况下为整个应用程序设置 CORS 设置的正确方法是什么?每个 Controller 上的注释?
我正在初始化一个 Rest servlet,如下所示:
@Bean
public ServletRegistrationBean<DispatcherServlet> registerDispatcherServlet(DispatcherServlet servlet) {
ServletRegistrationBean<DispatcherServlet> registration = new ServletRegistrationBean<>(servlet);
servlet.setContextConfigLocation("");
registration.addUrlMappings("/api/*");
registration.setLoadOnStartup(1);
return registration;
}
日志显示:
Servlet dispatcherServlet mapped to [/api/*]
Servlet dispatcherServlet mapped to [/]
Servlet dispatcherServlet was not registered (possibly already registered?)
给定的 Cors 设置是否会用于提到的未注册的 servlet?
最佳答案
我通过在 addMapping()
调用中将 "/api/**"
替换为 "/**"
来使其工作配置 CORS 注册表时:
@Override
public void addCorsMappings(CorsRegistry registry) {
LogManager.getLogger(getClass()).info("CORS things!");
registry.addMapping("/**").allowedOrigins("*").maxAge(3600);
}
虽然我很困惑为什么这是让它工作的设置,以及如果我需要公开几个独立的休息路径,我该怎么办,即:
http:/host:port/public-api
(来自整个互联网)http:/host:port/reserved-api
(来自知名主机)http:/host:port/admin-api
(仅限同一主机)关于java - Spring Boot CORS设置: CrossOrigin annotation works addCorsMappings doesn't,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60945809/
我的几个 Controller 上有一个 @CrossOrigin 注释。我希望能够在某处设置一个static final 并让它们全部引用它。像这样的东西: public static final
我使用的是 spring boot 1.5.4 并且 @crossorigin 不能使用 JDK 1.7 进行编译它使用 JDK 1.8 进行编译,但我只需要 1.7 错误:(19, 1) java:
在图像和脚本标签中。 我的理解是您可以访问其他域上的脚本和图像。那么什么时候使用这个属性呢? 这是您想限制其他人访问您的脚本和图像的能力吗? 图片: https://developer.mozilla
在图像和脚本标签中。 我的理解是您可以访问其他域上的脚本和图像。那么什么时候使用这个属性呢? 这是您想限制其他人访问您的脚本和图像的能力吗? 图片: https://developer.mozilla
我遇到错误“从来源‘http://localhost:8081/products/getPro’访问位于‘http://localhost:4200’的 XMLHttpRequest 已被 CORS
我正在尝试定义origins允许执行 REST 服务。我正在研究 Java(1.8)、SpringBoot (1.5.9)。我尝试通过两种方式实现 CORS: @CrossOrigin(origins
我正在使用最新的 Spring Boot (1.2.7.RELEASE)。我想使用@CrossOrigin来自包 org.springframework.web.bind.annotation 的注释
我已将 Spring 版本从 3.0.5 升级到 4.2.5。我可以将 @CrossOrigin 注释(Spring 4.2.5 的新增功能)与之前使用过的注释(例如 @POST、@Path、 一起使
是否可以通过环境变量为 @CrossOrigin 注释指定来源?我想这样做,以便我可以将相同的代码库用于 uat/staging/production。我希望我的 uat/staging 环境可以通过
引用:Prevent HTTP Basic Authentication from displaying prompt for images 为了保护我的用户生成的内容免受这种潜在的“利用”,我将 c
上下文:To quote the Mozilla documentation: Normal script tags will pass minimal information to the wind
我在 react 中使用 cropperjs: 这不适用于跨源图像。但是,当我将“crossOrigin”更改为“crossorigin”时,它将起作用。但我收到了警告: Warning: Unkn
使用特定交叉原点和放置 * 有什么区别? 例如 @CrossOrigin(origins = localhost:8080) or @CrossOrigin(origins = "*") 如果是 *
Spring @CrossOrigin 注释不适用于 DELETE 方法。 示例代码(在 Groovy 中): @CrossOrigin @RestController @RequestMapping
我的 AWS S3 中存储了 MP4 视频文件和 WEBVTT 文件。AWS S3 批量配置到我的子域,可以通过以下方式访问它:http://clip.mydomain.com/bulkname/vi
我尝试将 integrity 和 crossorigin 属性添加到上面的链接,但在 Visual Studio 2015 中都显示为链接标记的无效属性。解决方案是什么。 最佳答案 似乎 Visual
当我从命令行使用 maven 编译任何包含 Spring @org.springframework.web.bind.annotation.CrossOrigin 注释的类时,它编译得很好。但是,当我
我正在尝试将 HTML5 视频播放器集成到我的应用程序中。我的视频源和标题(用于轨道标签)来自不同的域。 当我使用 ... 以上所有代码在 Chrome 不安全模式(禁用网络安全
问题发生在 chrome 浏览器桌面上。尝试将轨道元素添加到视频时出现以下错误: http://jsfiddle.net/itayKinnrot/6Up5t/1/ 当我
我想了解如何为 img 标签使用 crossorigin 属性。我找不到一个很好的例子(我找到的关于启用 CORS 的图像的例子是用 JavaScript 代码解释的,因此我看不到带有 img 标签的
我是一名优秀的程序员,十分优秀!