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

原因:CORS标头'Access-Control-Allow-Origin'丢失/Spring Boot

田博远
2023-03-14

我有一个基本的Spring BootRest应用程序和angular应用程序。(使用JWT)

但是,由于这个错误,我不能发出任何请求:(即使我在响应头中添加“access-control-allog-origin”,“*”

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/api/login. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://localhost:8080/api/login. (Reason: CORS request did not succeed).

以下是安全配置:

public class AuthTokenFilter extends OncePerRequestFilter {
// ...
}

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(
        // securedEnabled = true,
        // jsr250Enabled = true,
        prePostEnabled = true)
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {
@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
                .cors().and().csrf().disable()
                .authorizeRequests()
                .antMatchers(WebUrls.API.API + WebUrls.LOGIN.LOGIN,
                        WebUrls.API.API + WebUrls.LOGIN.REGISTER,
                        WebUrls.API.API + WebUrls.LOGIN.REFRESH_TOKEN)
                .permitAll()
                .anyRequest().authenticated();
        http.addFilterBefore(authJwtTokenFilter(), UsernamePasswordAuthenticationFilter.class);
        http.sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS);
    }
}

下面是我添加cors头的地方:

@Component
public class MyCorsFilter implements Filter {

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "GET, PUT, POST, DELETE, OPTIONS");
        response.setHeader("Access-Control-Allow-Headers", "*");
        filterChain.doFilter(servletRequest, servletResponse);
    }
}

共有1个答案

韩季
2023-03-14

请尝试下面的配置使此工作。这使得CORS请求可以从应用程序中的任何起点到任何endpoint。

@Configuration
@EnableWebMvc
public class WebConfig implements WebMvcConfigurer {
 
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**");
    }
}
 类似资料:
  • Response.AddHeader(“Access-Control-Allow-Origin”,“*”)是如何实现的;行设置多个标题时,包括,但没有当我删除它?

  • 问题内容: 我正在尝试使用Google Maps API计算两个地方之间的预计旅行时间。我通过以下方式要求数据: 问题是在浏览器控制台中出现错误: 它也向我显示警告: 但是,当我查看网络部分中的控制台时,它显示呼叫成功完成,并且显示以下json: 有人可以帮我解决这个问题吗?我已经在网站上尝试过类似的问题,但无法解决问题。提前致谢。 问题答案: 您正在客户端使用距离矩阵服务。 但是 客户端(浏览器

  • 我有这个映射: 我正在使用控制器SpringBoot,我的控制器是 我将注释添加到所有存储库 主要类别是: 我添加了文件MyConfiguration(如爵士提议的那样) 前端(角度6) 因此,我想向使用这种方法的用户添加一个专家列表: 在哪里 你有解决这个问题的想法吗?。谢谢。

  • 我从ASP.NET表单中调用这个函数,在调用Ajax时在firebug控制台中得到以下错误。 跨源请求被阻止:同一源策略不允许读取http://anotherdomain/test.json上的远程资源。(原因:CORS标头“Access-Control-Allow-Origin”丢失)。 我做了其他的方法,但仍然找不到解决办法。 注意:我没有服务器权限进行服务器端(API/URL)更改。

  • 当我尝试设置时,我得到一个CORS错误原因:CORS头'access-control-allog-origin'丢失 下面是我在Spring MVC中的Cors重写:

  • 大家好,我有一个问题,我不能从客户机获得JSON值。我已经创建了WCF REST服务,并在客户机的IIS中添加了该服务。从客户机,打开我的网站,这个方法readIndicator被触发。但是收到了一个错误消息。我已经在web.config添加了Access-Control-Allog-Origin。 WCF web.config 我已经用我自己的电脑试过了,没问题。我不知道我犯了什么错误。我希望你