gpt4 book ai didi

java - 在 dropwizard 中启用 cors 不起作用

转载 作者:太空狗 更新时间:2023-10-29 22:36:16 24 4
gpt4 key购买 nike

我正在开发一个 dropwizard 应用程序和 js ui 以与 api 交互。我需要加载 json 数据来更新 View ,但我必须在此之前在 dropwizard 中启用 cors。我做了一些工作人员,但它似乎不起作用,因为 dropwizard 始终返回 204 无内容。

@Override
public void run(final BGConfiguration configuration, final Environment environment) throws Exception {
final Map<String, String> params = new HashMap<>();
params.put("Access-Control-Allow-Origin", "/*");
params.put("Access-Control-Allow-Credentials", "true");
params.put("Access-Control-Expose-Headers", "true");
params.put("Access-Control-Allow-Headers", "Content-Type, X-Requested-With");
params.put("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS");
environment.servlets().addFilter("cors", CrossOriginFilter.class).setInitParameters(params);
}

最佳答案

这里的错误是过滤器没有通过 addMappingForUrlPatterns 方法配置 URL 路径。

使用 dropwizard 0.7.1 这对我有用:

import org.eclipse.jetty.servlets.CrossOriginFilter;
import javax.servlet.DispatcherType;
import java.util.EnumSet;

public void run(Configuration conf, Environment environment) {
// Enable CORS headers
final FilterRegistration.Dynamic cors =
environment.servlets().addFilter("CORS", CrossOriginFilter.class);

// Configure CORS parameters
cors.setInitParameter("allowedOrigins", "*");
cors.setInitParameter("allowedHeaders", "X-Requested-With,Content-Type,Accept,Origin");
cors.setInitParameter("allowedMethods", "OPTIONS,GET,PUT,POST,DELETE,HEAD");

// Add URL mapping
cors.addMappingForUrlPatterns(EnumSet.allOf(DispatcherType.class), true, "/*");
}

我假设您正在浏览器中进行实时测试,但您可以使用如下所示的 curl 命令通过 CLI 进行验证:

$ curl -H "Origin: http://example.com" \
-H "Access-Control-Request-Method: POST" \
-H "Access-Control-Request-Headers: X-Requested-With" \
-X OPTIONS --verbose \
http://localhost:8080

您应该在响应中看到一堆 Access-Control-* HTTP header 。

关于java - 在 dropwizard 中启用 cors 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775364/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com