gpt4 book ai didi

http - 给出资源错误的 Tomcat 应用程序 Web.xml 自定义过滤器已移动;过滤器将 https 重定向到 http

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

仅供引用:我正在运行带有 IIS 7.5 和 Apache Tomcat 5.5 的 Windows Server 2008 R2。 IIS 通过 AJP 连接器 1.3 版与 Tomcat 对话。 Tomcat 启用了 SSL;因此,该网站同时启用了 HTTP 和 HTTPS 流量。我在 web.xml 文件中也有一个安全约束,用于重定向以通过 url 模式强制执行特定文件的 HTTPS 流量。

说了这么多,我已经创建了一个应该将 https 重定向到 http 的 servlet 过滤器。不幸的是,当我重新启动 tomcat 服务器并在登录页面中键入时,出现以下错误:

The resource you are looking for has been removed, had its name changed, or is temporarily unavailable.

我在 Eclipse 中创建了这个类并将其导出为一个名为 RedirectToHTTP.jar 的 JAR 文件,我将这个文件放在应用程序的 WEB-INF/lib 目录中,而不是在 Tomcat 安装目录中。

我不知道问题出在哪里,如果有任何反馈,我将不胜感激。谢谢。

更新

根据评论中的建议,我检查了日志文件,发现与我的过滤器相关的错误

-- Exception starting filter redirectFilter

java.lang.UnsupportedClassVersionError: myfilterpkg/RedirectToHTTPFilter : Unsupported major.minor version 51.0.

我用 JRE 1.7 编译了过滤器。我认为 Tomcat 可能正在使用较低版本的 JRE。这可能是问题所在吗?

这里是web.xml文件中的相关数据:

<filter>
<filter-name>UTF8Encoder</filter-name>
<filter-class>com.remedy.arsys.support.UTF8EncodingFilter</filter-class>
<init-param>
<param-name>Param1</param-name>
<param-value>0</param-value>
</init-param>
</filter>

<filter>
<filter-name>redirectFilter</filter-name>
<filter-class>myfilterpkg.RedirectToHTTPFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>UTF8Encoder</filter-name>
<servlet-name>*.jsp</servlet-name>
</filter-mapping>

<filter-mapping>
<filter-name>redirectFilter</filter-name>
<url-pattern>/index.jsp</url-pattern>
</filter-mapping>

这是 Java 类:

package myfilterpkg;

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.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@SuppressWarnings("unused")
public class RedirectToHTTPFilter implements Filter {

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
if ((request instanceof HttpServletRequest) && (response instanceof HttpServletResponse)) {
String redirectTarget = ((HttpServletRequest)request).getRequestURL().toString().replaceFirst("https", "http");

if(request.isSecure()) {
((HttpServletResponse)response).sendRedirect(redirectTarget);
}
else {
chain.doFilter(request, response);
}
}
}

@Override
public void destroy() {
}

@Override
public void init(FilterConfig arg0) throws ServletException {
}
}

最佳答案

过滤器必须使用 tomcat 服务器实际运行的运行时的源级别进行编译。否则在类加载时会出现上述错误。

关于http - 给出资源错误的 Tomcat 应用程序 Web.xml 自定义过滤器已移动;过滤器将 https 重定向到 http,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12199468/

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