gpt4 book ai didi

java - 在 Tomcat 8.0.30 上启用 CORS

转载 作者:行者123 更新时间:2023-11-30 02:52:00 25 4
gpt4 key购买 nike

感谢任何帮助。

我在新部署的 Tomcat 8.0.30 上遇到了 CORS 问题。我不断收到下面的错误。我使用 127.0.0.1 作为 API 服务器地址,192.168.1.100 是我的 HTTP 服务器地址。

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '_http://192.168.1.100:8999' is therefore not allowed access. The response had HTTP status code 403.

通读整个 Tomcat 文档,在 tomcat web.xml 以及项目 web.xml 下添加了 cors 过滤器,但这里没有发生任何神奇的事情,仍然出现相同的错误。使用 init-param 尝试了最小和高级,同样的错误。

我使用 Spring 4 作为我的 REST API 框架。项目编码部分还需要配置吗?

以下是我到目前为止已完成的步骤:

  • 在web.xml下添加cors过滤器,根据文档进行最小配置,不起作用
  • 在 web.xml 下添加 cors 过滤器,完整配置,但不起作用。
  • 尝试使用 http://software.dzhuvinov.com/cors-filter.html 中的 cors 过滤器,仍然无法工作

有什么建议吗?

network response

<小时/>

添加web.xml配置我尝试将 cors.allowed.origins 更改为 *、127.0.0.1,192.168.1.100,但都不起作用,删除凭据和 maxage

<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>http://192.168.1.100</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,Authorization</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>
</filter>
<filter-mapping>
<filter-name>CorsFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<小时/>

Vishal建议,将tomcat版本从8.0更改为8.5,仍然是同样的问题

 XMLHttpRequest cannot load http://127.0.0.1:8080/leyutech-framework-gurunwanfeng/api/ad/getAdInfoByAdType.html?adType=0. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://192.168.1.100:8080' is therefore not allowed access. The response had HTTP status code 403.

最佳答案

我使用自定义过滤器来解决这个问题,我不知道为什么官方的tomcat cors过滤器在我的情况下不起作用,任何人都可以提出这背后的逻辑,我愿意尝试一下。

Original Post from Tobia

代码是根据上面的链接修改的。

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;

public class SimpleCORSFilter implements Filter {

public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
chain.doFilter(req, res);
}

public void destroy() {
// TODO Auto-generated method stub

}

public void init(FilterConfig arg0) throws ServletException {
// TODO Auto-generated method stub

}

}

当前项目下的web.xml配置

<filter>
<filter-name>SimpleCORSFilter</filter-name>
<filter-class>com.example.util.SimpleCORSFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>SimpleCORSFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

关于java - 在 Tomcat 8.0.30 上启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38354664/

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