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

当从Heroku Angular前端调用到Heroku springboot后端时,Rest调用返回403

尉迟远
2023-03-14

我在Heroku上开发了一个简单的CRUD Springboot后端。

    null

非常感谢任何帮助

共有1个答案

冯星剑
2023-03-14

具有issue registerCrossFilterBean的cross origin,还使用access-control-allog-origin注册站点,或者您可以在这里查看以下链接

@Configruation
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true, securedEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter{

public String crossOriginAllowedHeaders="header1,header2, *" ;
public String crossOriginAllowedSites="site1,site2, * ";

  @Override
    protected void configure(HttpSecurity http) throws Exception {
     )
      http.cors()
           .and()
           .csrf()
           .disable();

             ............
             ...........
        .and()
             .headers()
             .frameOptions()
             .sameOrigin().addHeaderWriter((request,response)->{
                                                 response.setHeader("Cache-Control","no-cache, no-store, max-age=0, must-revalidate, private");
                                                 response.setHeader("Pragma","no-cache");
                                                 response.setHeader("Access-Control-Allow-Origin",this.crossOriginAllowedSites);
                                             })



}


 @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    protected CorsFilter crossFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        config.setAllowCredentials(false);
        config.setAllowedHeaders(Arrays.asList(crossOriginAllowedHeaders.split(",")));
        config.setAllowedOrigins(Arrays.asList(crossOriginAllowedSites.split(",")));
        //config.setAllowedHeaders("*"); whitelist all sites
        //config.setAllowedOrigins("*"); whitelist all headers
        config.addAllowedMethod(HttpMethod.OPTIONS);
        config.addAllowedMethod(HttpMethod.GET);
        config.addAllowedMethod(HttpMethod.POST);
        config.addAllowedMethod(HttpMethod.PUT);
        config.addAllowedMethod(HttpMethod.DELETE);
        config.addExposedHeader("Authorization");
        config.setMaxAge(new Long(1800));

        source.registerCorsConfiguration("/api/**", config);
        source.registerCorsConfiguration(MANAGEMENT, config);
        source.registerCorsConfiguration("/v2/api-docs", config);
        source.registerCorsConfiguration("/**", config);

        return new CorsFilter(source);
    }

}

我希望这行得通

 类似资料:
  • 我使用的是和。由于某些原因,我需要在前端没有转发任何呼叫的情况下,逐个后端调用前端。 代码流应该从后端开始,它应该调用服务(或其他东西),我读到我必须使用但是我找不到一个示例或教程来反映我的需求。 你能告诉我一个正确的解决方案或教程吗?

  • 这非常相似,但我的问题不同:对于非OK响应,返回带有IHttpActionResult的内容 考虑到问题不同,我要求一个更简洁的答案,如果存在的话。 我的架构如下: 对后端控制器的Javascript/jQuery调用 后端控制器调用WebAPI服务。 WebAPI服务查询数据库(etc)并返回数据 我有以下简化代码(网络 API)... 示例1:如果产品id不存在,则返回错误: 示例2如果产品i

  • 我有一个应用程序与Spring-Boot一起提供服务。我已经为“API/...”添加了一些控制器--这些调用可以执行Angular Frontend需要的不同操作。我如何保护这些URL以便只有我的前端可以访问examlpe.com/api/...而不是每个用户?我不希望任何人能够访问examlpe.com/api/..但是他们应该能够访问example.com。 url example.com/a

  • 我对REST编程很陌生。 下面是我的类,它打算返回XML/JSON,但我很难让它返回正确的值。我尝试返回我的POJO类的Response、JsonArray和Object,但没有成功。我看了好几条线索,但都搞不清到底是什么问题。 资源类: POJO类: 这是我返回响应或朋友对象时得到的: 当返回< code>JsonArray时,我得到的是: 我面临的另一个问题是:如果我创建一个构造函数,我得到以

  • rust代码(部分省略),没什么逻辑,就是输出null和undefined 通过wasm-pack打包,target是web 然后在前端create-react-app中调用生成的包 返回数字没问题,但是null和undefined就输出了数字 其实也就是输出了这个叫idx的东西 那么为什么会输出这个idx呢?我应该怎样才能在前端获取到js的原生null值?

  • 通常情况下,我不会发布一个问题要求例子,但这是一个特殊的情况,因为我的研究没有找到可行的例子,我关于这个主题的问题似乎从来没有解决这个基本问题。