当前位置: 首页 > 知识库问答 >
问题:

在Spring引导2.3.3中,面临关于CORS的问题。没有使用Spring安全性

司英彦
2023-03-14

“已被CORS策略阻止:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在‘访问控制允许来源’标头。”

当api被角度部分击中时获得此消息,但当邮递员击中endpoint时获得正确响应。

共有1个答案

余靖
2023-03-14

您需要在Spring启动应用程序中启用/配置CORS(跨源资源共享)-

为整个应用程序启用CORS(这是一个全局配置)-

@Configuration
@EnableWebMvc
public class WebConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }
}

此外,Spring允许您在控制器和RequestMapping级别控制CORS配置-

要为整个控制器启用CORS-

@CrossOrigin(origins = "http://your-client-domain.com", maxAge = 3600)
@RestController
@RequestMapping("/booking")
public class BookingController {

    @RequestMapping("/{id}")
    public Booking retrieve(@PathVariable Long id) {
        // ...
    }

    @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
    public void remove(@PathVariable Long id) {
        // ...
    }
}

为特定路径映射启用CORS(请求映射)-

@RestController
@RequestMapping("/booking")
public class BookingController {

    @CrossOrigin(origins = "http://your-client-domain.com")
    @RequestMapping("/{id}")
    public Booking retrieve(@PathVariable Long id) {
        // ...
    }

    @RequestMapping(method = RequestMethod.DELETE, path = "/{id}")
    public void remove(@PathVariable Long id) {
        // ...
    }
}

您也可以仅对所需的映射(路径)应用CORS配置,您可以始终将其配置为粒度详细信息-

@Configuration
@EnableWebMvc
public class WebConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/api/v1/**")
            .allowedOrigins("http://your-client-domain.com")
            .allowedMethods("OPTIONS", "GET", "POST", "PUT", "DELETE")
            .allowedHeaders("Some-Header-x", "Authorization")
            .exposedHeaders("X-API-Limit")
            .allowCredentials(false).maxAge(3600);
    }
}

您可以在这里阅读有关在Spring应用程序中启用和配置CORS的更多信息

 类似资料:
  • 我使用的是Spring Boot版本2.0.2Release。下面是我的安全配置 加载http://localhost:8080/myurl失败:对预飞行请求的响应未通过访问控制检查:请求的资源上没有“access-control-allow-origin”标头。因此,不允许访问源“http://localhost:4200”。响应的HTTP状态代码为403。

  • 我正在用Spring-boot(在http://localhost:8080上)和angular(在http://localhost:80上)构建一个应用程序。 如果我输入了正确的密码,http响应代码(我可以在Chrome控制台中看到)是,但我仍然到达块(带有error.status=-1),并且我可以在控制台中看到以下错误消息: XMLHttpRequest无法加载http://localho

  • 我有Spring Boot REST API和React基于CMS。 BasicWebSecurityConfigurerAdapter.kt 我也尝试在我的RestControllers上使用注释,但我遇到了同样的问题,GET请求可以工作,POST请求不能工作。我对Spring Boot还是相当陌生的,所以我肯定有些东西我遗漏了。

  • 我使用的是Spring Boot2.2.2,作为REST服务发布,并为前端做出反应。 我的Spring应用程序属性: 我的React代码片段: 我也尝试过设置标题,下面是重新修改的控制器。我有多个CORS定义错误。

  • 你好,我在使用Ldap创建简单登录时遇到问题。我已经从spring.io网站下载了入门项目:入门LDAP。 它可以很好地与ldif文件配合使用,但我想用运行ldap服务器来代替它。我已经试了好几天了,没有任何进展。我用这段代码获得了最好的结果(替换为getting started project的WebSecurity配置) 如果我尝试使用格式为“用户名”“密码”的良好用户名和密码登录控制台输出:

  • 问题陈述:我有一些Rest的API,它们使用Spring安全性进行CSRF保护。此外,这些API将通过Angular WEB UI从不同的Origin/domain访问。我不需要Spring Authentication,因为身份验证由Siteminder处理。 方法:我遵循了Dave Syer提供的CSRF保护的链接:登录页面:Angular JS和Spring Security Part II