使用HTTPS无法直接访问受保护的JSF页面

时间:2012-12-02 19:47:42

标签: jsf tomcat ssl https

今天我开始在我的Java EE项目中实现SSL。一切正常,直到我尝试直接访问已注销客户的受保护区域。不会被重定向到登录页面,而是出现了一个问号。

Request protected page displays just a question mark instead of the login page

  1. 此行为只生成FireFox,IE工作正常
  2. 没有SSL,FireFox也能正常工作。
  3. 我正在使用Tomcat 7.0和JSF 2.1 受保护的页面是:

    1. SubDir / admin中的所有内容都需要角色ADMIN才能访问
    2. SubDir /客户需要的所有内容都必须可以访问
    3. 奇怪的是,只有访问SubDir / customer中的某些页面才会显示此问号!通过尝试访问所有其他人(包括/ admin中的那些人),可以正确显示“登录”页面(所有页面的结构都相同)。

      最后,我使用TCP端口443而不是8443正确启动并运行网站。现在两个浏览器都能正确显示登录页面,然后才能有人访问受保护的页面。

      所以我的问题。有没有人知道为什么如果使用端口8443会出现这种情况?还有一种方法可以使用端口8443吗?

      下面你可以找到tomcats server.xml文件。 提前谢谢!

          <?xml version="1.0" encoding="UTF-8"?>
      <Server
          port="8005"
          shutdown="SHUTDOWN" >
      
          <Listener
              SSLEngine="on"
              className="org.apache.catalina.core.AprLifecycleListener" />
      
          <Listener className="org.apache.catalina.core.JasperListener" />
      
          <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
      
          <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
      
          <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
      
          <GlobalNamingResources>
      
              <Resource
                  name="UserDatabase"
                  auth="Container"
                  description="User database that can be updated and saved"
                  factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
                  pathname="conf/tomcat-users.xml"
                  type="org.apache.catalina.UserDatabase" />
          </GlobalNamingResources>
      
          <Service name="Catalina" >
      
              <Connector
                  connectionTimeout="20000"
                  port="8080"
                  protocol="HTTP/1.1"
                  redirectPort="443" />
      
              <Connector
                  SSLEnabled="true"
                  clientAuth="false"
                  keystoreFile="C:\Program Files (x86)\apache-tomcat-7.0.30\conf\BookStore.keystore"
                  keystorePass="myPwd"
                  maxThreads="200"
                  port="443"
                  protocol="HTTP/1.1"
                  scheme="https"
                  secure="true"
                  sslProtocol="TLS" />
      
              <Connector
                  port="8009"
                  protocol="AJP/1.3"
                  redirectPort="443" />
      
              <Engine
                  name="Catalina"
                  defaultHost="localhost" >
      
                  <Realm className="org.apache.catalina.realm.LockOutRealm" >
      
                      <Realm
                          className="org.apache.catalina.realm.UserDatabaseRealm"
                          resourceName="UserDatabase" />
                  </Realm>
      
                  <Realm
                      className="org.apache.catalina.realm.JDBCRealm"
                      connectionURL="jdbc:mysql://localhost/bookstore?user=bookstore&amp;password=book$tore"
                      driverName="org.gjt.mm.mysql.Driver"
                      roleNameCol="role"
                      userCredCol="pwd"
                      userNameCol="eMail"
                      userRoleTable="roles"
                      userTable="customer" />
      
                  <Host
                      name="localhost"
                      appBase="webapps"
                      autoDeploy="true"
                      unpackWARs="true" >
      
                      <Valve
                          className="org.apache.catalina.valves.AccessLogValve"
                          directory="logs"
                          pattern="%h %l %u %t &quot;%r&quot; %s %b"
                          prefix="localhost_access_log."
                          suffix=".txt" />
      
                      <Context
                          docBase="BookStore"
                          path="/BookStore"
                          reloadable="true"
                          source="org.eclipse.jst.jee.server:BookStore" />
                  </Host>
              </Engine>
          </Service>
      
      </Server>
      

1 个答案:

答案 0 :(得分:1)

当您尝试在https连接上使用http时,会出现该问号。您无法看到正在使用的协议,因为FF中的默认设置会隐藏协议。

在浏览器网址中输入 about:config ,然后查找 browser.urlbar.trimURLs ,并将其设置为 false 。现在,您将在浏览器网址前看到 http:// 。将其切换为httpS,问号将消失。

编辑:您尝试访问的网址显示在标签中,它是 http 而不是 https