gpt4 book ai didi

java - `javax.filter.Filter` 没有正确添加 CORS header

转载 作者:行者123 更新时间:2023-11-28 23:22:05 27 4
gpt4 key购买 nike

我有一个简单的 javax.filter.Filter 实现,它应该将 CORS header 添加到 HttpResponse:

    log.debug("Headers before adding: {}", response.getHeaderNames());
log.debug("Adding CORS headers to {}", response.getClass().getName());
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS");
log.debug("Headers after adding: {}", response.getHeaderNames());

但是,有时 header 不会在响应中结束(根据接收方和这段日志):

DEBUG  Headers before adding: [Cache-Control]
DEBUG Adding CORS headers to org.apache.catalina.connector.ResponseFacade
DEBUG Headers after adding: [Cache-Control]

有时他们会:

DEBUG  Headers before adding: []
DEBUG Adding CORS headers to org.apache.catalina.connector.ResponseFacade
DEBUG Headers after adding: [Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers]

我做错了什么?

最佳答案

问题是,如果您在设置 header 之前调用 chain.doFilter(req, res),Tomcat/Jetty 将开始写入响应并且无法添加更多 header 。不幸的是,这两个服务器都不会给您错误消息或异常来表明这一点。

解决方案:始终在调用 chain.doFilter(req, res) 之前设置 header

关于java - `javax.filter.Filter` 没有正确添加 CORS header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42272096/

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