java - 带有 CORS 的 Spring Boot HTTPS,Angular 5 将所有请求加倍
问题描述
Spring boot(v5) with embeded tomcat
我的小Angular 5
网站有一个REST API,这个 REST API 是基于https
协议的,所以我需要启用cors origin
让我的网站与 REST API 通信。我是怎么做到的:
@SpringBootApplication
public class AdminPanelApplication {
public static void main(String[] args) {
SpringApplication.run(AdminPanelApplication.class, args);
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedOrigins("*")
.allowedMethods("*")
.allowedHeaders("*");
}
};
}
}
但是有了这个cors origin
,我的网站开始为所有请求发送 2 个请求,第一个是 OPTION 请求,第二个是真正的请求(获取、发布等)。
我认为这很糟糕,至少对于加载到服务器来说(而不是发送一个请求,我总是发送两个(即使第一个是非常轻量级的option
请求),我在任何网站上都没有看到这种行为(例如堆栈溢出 :) )
例子:
所以我假设我做错了什么,那么如何以正确的方式设置 cors 起源(或其他东西)?
解决方案
第一个请求是 OPTIONS 类型,这是正常的。HTTP OPTIONS 方法用于描述目标资源的通信选项。
在此处阅读更多信息:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
推荐阅读
- stenciljs - 需要帮助为 Stencil 设置类名
- javascript - 如何在 laravel 中使用日期选择器?
- jquery - 尝试使用 jquery 将值传递给 mvc 控制器
- elasticsearch-7 - 非嵌套对象的ES范围查询和嵌套对象的查询词
- ios - 如何在 SwiftUI 中创建 2 个计时器?
- java - Gradle build error: CreateProcess error=206, The filename or extension is too long
- java - Apache POI XSSFWorkbook 为文件抛出 NullPointerException
- angular - 设置角度服务方法以便客户端组件可以正确响应调用中发生的 HTTP 错误的好方法是什么?
- angular - 无法读取未定义错误的属性“长度”,但仍呈现正确的数据
- google-sheets - 有没有办法删除谷歌表格中的一系列单元格?