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

CORS 问题:“访问控制-允许-源'标头不存在

闾丘玮
2023-03-14

我正在开发一个带有jhipster V4.5.6的Spring启动应用程序。但无法配置 CORS。

下面是我的application-dev.yml文件:

 # CORS is only enabled by default with the "dev" profile, so BrowserSync can access the API
cors:
    allowed-origins: "http://localhost:9000"
    allowed-methods: GET, PUT, POST, DELETE, OPTIONS
    allowed-headers: "*"
    exposed-headers:
    allow-credentials: true
    max-age: 1800

WebConfigurer.java如下:

@Bean
public CorsFilter corsFilter() {
    UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
    CorsConfiguration config = jHipsterProperties.getCors();
    if (config.getAllowedOrigins() != null && !config.getAllowedOrigins().isEmpty()) {
        log.debug("Registering CORS filter");
        source.registerCorsConfiguration("/api/**", config);
        source.registerCorsConfiguration("/v2/api-docs", config);
    }
    return new CorsFilter(source);
}

安全配置。java文件如下所示:

@Override
public void configure(WebSecurity web) throws Exception {
    web.ignoring()
        .antMatchers(HttpMethod.OPTIONS, "/**")
        .antMatchers("/test/**");
}

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .csrf()
        .csrfTokenRepository(CookieCsrfTokenRepository.withHttpOnlyFalse())
    .and()
        .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)
        .exceptionHandling()
        .authenticationEntryPoint(http401UnauthorizedEntryPoint())
    .and()
        .authorizeRequests()
        ... //Some project specific configuration
}

现在,我可以使用 GET 请求。但是当我使用POST时,如下所示:

private demoCors(restUrl: string, input: any): Observable<Result> {
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });
    return this.http.post(restUrl, JSON.stringify(input), options)
    .map(this.extractData)
    .catch(this.handleError);
}

我得到以下错误:

POST http://localhost:8080/api/dth 403 (Forbidden)

XMLHttpRequest 无法加载 http://localhost:8080/api/dth。请求的资源上不存在“访问控制-允许-源”标头。因此,不允许访问源“http://localhost:9000”。响应具有 HTTP 状态代码 403。

任何人都可以建议如何解决它?

共有1个答案

宓昂雄
2023-03-14

你能试试这个吗。

# CORS is only enabled by default with the "dev" profile, so BrowserSync can access the API
cors:
    allowed-origins: "*"
    allowed-methods: GET, PUT, POST, DELETE, OPTIONS
    allowed-headers: "*"
    exposed-headers:
    allow-credentials: true
    max-age: 1800
 类似资料:
  • 我正在尝试将webUntis(文档)API用于学校项目。现在,我只是尝试建立与API的任何类型的连接。 此代码产生以下错误消息: 已阻止跨源请求:同一源策略禁止读取位于的外部资源https://api.webuntis.dk/api/status(原因:缺少CORS标头“访问控制允许来源”)。 这个问题可能如何解决?也许我的API密钥是错误的? 免责声明:错误消息是从德语翻译过来的。

  • 如何解决以下错误; 加载资源失败:服务器响应状态为500(内部服务器错误)cdn。安普项目。org/v0。js:68响应必须包含AMP访问控制允许源代码源标题Yd@cdn。安普项目。org/v0。js:68 cdn。安普项目。org/v0。js:68表单提交失败:错误:响应必须包含AMP Access Control Allow Source Origin标头​​​ 报道 遵循CORS上AMP G

  • 嗨,我不能禁用CORS在我的项目。我为CORS配置使用了自定义过滤器和Spring Security配置。我见过这个极好的答案:你能在Spring中完全禁用CORS支持吗? 但是当我尝试下面的实现时,我仍然得到CORS错误: CORS配置:

  • 我陷入了API网关的问题,我已经浏览了AWS论坛上的所有其他SO答案,并浏览了他们的文档,但仍然没有乐趣。 我正在尝试使用AWS API gateway设置一个API,该API调用一个Lambda函数,该函数读取/写入DynamoDB中的一个表。 DynamoDB的Lambda函数正在工作。我在AWS中创建了一个API,并为它创建了GET和OPTIONS方法。我了解到AWS并不强制只使用GET/P

  • 我错过了一些东西。我正在努力让API调用工作。然后我像下面一样分割网址,它可以工作——字面上一次。在那之后,它无法再次工作。我发誓我没有改变什么。 在AXIOS中,您是如何操作的? 错误消息是: 无法加载XMLHttpRequesthttp://magicseaweed.com/api/W2Z26fXscpELi7nPB0svfqcGj9FtGO9e/forecast/?spot_id=228.

  • 我的跨源请求被阻止了: 同源策略不允许从http://localhost:8092/authenticate读取远程资源。(原因:CORS标头'Access-Control-Allow-Origin'丢失)。