Swagger(现在通常指的是OpenAPI)是一个用于设计、构建、记录和使用RESTful Web服务的框架。在Linux环境下,如果你想要为Swagger UI配置跨域资源共享(CORS),你可以通过以下步骤来实现:
修改Swagger配置:
你需要修改Swagger的配置文件,以便在服务器端设置CORS相关的HTTP头。这通常涉及到设置Access-Control-Allow-Origin
头,该头指定了哪些域可以访问你的资源。
如果你使用的是Spring Boot和springfox-swagger,你可以在你的Swagger配置类中添加一个CorsConfiguration
bean,并将其应用到Docket bean上。例如:
import springfox.documentation.swagger2.annotations.EnableSwagger2;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.service.CorsConfiguration;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger.web.UiConfiguration;
import springfox.documentation.swagger.web.UiConfigurationBuilder;
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.basePackage("your.base.package"))
.paths(PathSelectors.any())
.build();
}
@Bean
public UiConfiguration uiConfig() {
return UiConfigurationBuilder.builder()
.deepLinking(true)
.displayOperationId(false)
.defaultModelsExpandDepth(1)
.defaultModelExpandDepth(1)
.defaultModelRendering(ModelRendering.EXAMPLE)
.displayRequestDuration(false)
.docExpansion(DocExpansion.NONE)
.filterDisable(true)
.maxDisplayedTags(null)
.operationsSorter(OperationsSorter.ALPHA)
.showExtensions(false)
.tagsSorter(TagsSorter.ALPHA)
.supportedSubmitMethods(UiConfiguration.Constants.DEFAULT_SUBMIT_METHODS)
.validatorUrl(null)
.build();
}
@Bean
public CorsConfiguration corsConfiguration() {
CorsConfiguration configuration = new CorsConfiguration();
configuration.setAllowedOrigins(Arrays.asList("*")); // 允许所有域访问
configuration.setAllowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS"));
configuration.setAllowedHeaders(Arrays.asList("*"));
configuration.setAllowCredentials(true);
return configuration;
}
}
在上面的代码中,corsConfiguration
bean定义了CORS配置,允许所有域(*
)进行访问,并设置了一些常用的HTTP方法和头。
配置Spring Boot应用:
如果你使用的是Spring Boot,你还需要确保Spring Boot应用的配置文件(如application.properties
或application.yml
)中没有覆盖CORS设置。
重启应用: 修改配置后,你需要重启你的Spring Boot应用以使更改生效。
验证CORS配置: 一旦应用重启,你可以通过访问Swagger UI并尝试从一个不同的域进行请求来验证CORS配置是否生效。如果配置正确,你应该能够看到请求成功执行,而不会遇到CORS相关的错误。
请注意,上面的代码示例使用了*
来允许所有域的访问,这在生产环境中通常是不推荐的。在生产环境中,你应该将*
替换为实际允许访问的域,以提高安全性。