gpt4 book ai didi

Java Spring : No 'Access-Control-Allow-Origin' header is present on the requested resource

转载 作者:行者123 更新时间:2023-11-30 06:02:43 31 4
gpt4 key购买 nike

我正在尝试破解一个需要 CORS 的项目。当我请求 Java Spring Rest API 时,我收到:

No 'Access-Control-Allow-Origin' header is present on the requested resource

我的堆栈非常简单。我正在使用 Java Spring 和 Tomcat。在前端,我使用 jquery 发出请求。

我没有看到来自 Spring 的任何与此相关的日志,也没有看到 java spring 应用程序的调试器中显示的线程中的任何操作(这使得调试被阻止的地方非常困难)。

就我的 Spring 资源类而言,我在类的顶部包含了跨源注释 (@CrossOrigin())。我也尝试在资源的方法上添加相同的注释(没有任何运气)。从长远来看,我还尝试在新的 web.xml 文件中放入一些配置,以采用老式方式配置 CORS 过滤器:

<filter>
<filter-name>CorsFilter</filter-name>
<filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
<init-param>
<param-name>cors.allowed.origins</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.methods</param-name>
<param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
</init-param>
<init-param>
<param-name>cors.allowed.headers</param-name>
<param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
</init-param>
<init-param>
<param-name>cors.exposed.headers</param-name>
<param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
</init-param>
<init-param>
<param-name>cors.support.credentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.preflight.maxage</param-name>
<param-value>10</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

我想添加的最后一个细节是,当我向前面提到的 API(带有 CORS 注释)发出非 CORS 请求时,我没有看到返回任何与允许所有或任何相关的 header 具体的起源。这让我想知道注释是否被某些东西阻止了。

我意识到,如果没有太多代码和日志,社区无法真正帮助我。我正在寻求有关如何调试此问题的指导。谢谢您的帮助!

最佳答案

spring 版本冲突是导致您出现此问题的原因。您可能想检查版本。如果版本不是问题,请添加这样的类。

@Component
public class MyCORSFilter implements Filter {

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {

HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", request.getHeader("Origin"));
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With, remember-me");
chain.doFilter(req, res);
}

@Override
public void init(FilterConfig filterConfig) {
}

@Override
public void destroy() {
}

}

关于Java Spring : No 'Access-Control-Allow-Origin' header is present on the requested resource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51958456/

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