2017-11-23 2 views
1

私はApacheとTomcatでかなり新しいので、あなたが知っているより良く説明してください:P 私はローカルで働いています。ApacheとTomcatの統合

私はサーブレットを実行するためにTomcatを必要とするアプリケーションを1つ持っているので、私は入力することができます。

作品

http://localhost:8080/rrcapp/xservlet?consult=list01

。私も自分のWebページには、Apache 2.4で実行されているので、私は入力することができます。

http://localhost:80/websrv/index.htm

あまりにも動作すること。

Refused to display ...in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'. 

私は設定を解除する私のhttpd.confの設定について読んだ:アパッチに役立つ私のindex.htmで、エラーを取得し、そのサーブレットに、クロムとのiframe内に呼び出しを行うときに問題が来ますx-frame-optionsやALLOW-FROMで設定することはできますが、Chromeではうまくいきません。

次にCSPポリシーについて読んだことがありますが、mi httpd.confでこのようなポリシーを設定する方法を理解できないため、Apacheサーバー内のiframe内でサーブレットを実行できます。

誰もがこれを手伝ってくれますか?

よろしく:)

EDIT 1:

私はエラーを理解おかげでエディ・ジェームズ・カースウェルIIは、Tomcatから来ました。私は彼が私を示した文書を読んで、とTomcatの私の/ confにディレクトリ内の私のweb.xmlを設定しようとした、これは結果でありました:

<filter> 
 
     <filter-name>httpHeaderSecurity</filter-name> 
 
     <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
 
     <async-supported>true</async-supported> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingEnabled</param-name> 
 
\t \t \t <param-value>true</param-value> 
 
\t \t </init-param> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingOption</param-name> 
 
\t \t \t <param-value>ALLOW-FROM</param-value> 
 
\t \t </init-param> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingUri</param-name> 
 
\t \t \t <param-value>http://localhost:80/*</param-value> 
 
\t \t </init-param> 
 
    </filter> 
 
\t 
 
    <filter-mapping> 
 
     <filter-name>httpHeaderSecurity</filter-name> 
 
     <url-pattern>/*</url-pattern> 
 
     <dispatcher>REQUEST</dispatcher> 
 
    </filter-mapping>

私はTomcatサーバーを再起動し、 iFrameをロードするために再びしようとした別のエラーました:

Invalid 'X-Frame-Options' header encountered when loading 'http://localhost:8080/rrcapp/xservlet?consult=list01': 'ALLOW-FROM http://localhost:80/*' is not a recognized directive. The header will be ignored. 

EDITを2:

IE 10とEDGEの最新バージョンのFirefox(57.0 Quantum)でも動作するようです。それでも、Chromeではうまくいきません。P

多分、ALLOW-FROMにはChromeにいくつかの問題がありますが、私が間違っていないとTomcatにCSP指令を設定できません。 Chromeでこれを解決するにはどうすればよいですか?

ここにヘルプがありますか? :)事前

+1

特にX-Frame-Optionsヘッダーについては、https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Optionsを参照してください。説明。 Apacheの設定を変更しても、iframeの内容と一緒に送信されるHTTPヘッダは、Tomcatから直接送られるため、影響を受けません。ヘッダーはTomcatによって設定されているので、そこで変更する必要があります。また、Tomcatインスタンスのリバースプロキシを検討することもできます。これにより、データとともに送信されたHTTPヘッダーを傍受して変更することができ、ポート80でコンテンツをボーナスとして配信できるようになります。 – AfroThundr

+0

Tomcatがエラーを投げたと思いますか?私はChromeにいるので、X-Frame-Options(ALLOW FROM)はこのブラウザでは機能しません。この種の呼び出しを許可するためにTomcatを変更する必要があるのはどこですか?どうもありがとう。 – Ruben

+1

これは役に立つかもしれません:https://tomcat.apache.org/tomcat-8.0-doc/config/filter.html#HTTP_Header_Security_Filter Apache仮想ホストの設定と 'conf-enabled'のすべてをチェックして、ヘッダーはどこかで詮索されていません。 – AfroThundr

答えて

1

おかげでまず、私は私に非常に貴重なヒントを与えて、この問題にすべての時間を私を助けエディジェームズ・カースウェルIIのおかげで、したいです。

最後に、私はhttpd経由でProxysで入手しました。リンク先の記事で述べたように、この行コメント解除:Apacheの中に私のアプリのディレクトリを設定する

LoadModule proxy_module modules/mod_proxy.so 
LoadModule proxy_http_module modules/mod_proxy_http.so 

そして:今すぐ

ProxyRequests Off 
ProxyPass /rrcapp http://localhost:8080 
ProxyPassReverse /rrcapp http://localhost:8080 

<Location "/rrcapp"> 
    Order allow,deny 
    Allow from all 
</Location> 

を、私はJSの呼び出しで書くことができ、。例:

document.location = '/rrcapp/xservlet?consult=list01'; 

Tomcatにある自分のアプリケーションリソースにアクセスできます。

なぜこのソリューションですか?すべてのブラウザで普遍的な、簡単に設定できます。

なぜ他のものはありませんか? IE 10とEDGEの最新バージョンのFirefox(57.0 Quantum)でも動作しました。それでも、私は使用しているブラウザであるChromemでは動作しませんでした。設定は、Tomcatディレクトリのweb.xmlに設定されています。

<filter> 
 
     <filter-name>httpHeaderSecurity</filter-name> 
 
     <filter-class>org.apache.catalina.filters.HttpHeaderSecurityFilter</filter-class> 
 
     <async-supported>true</async-supported> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingEnabled</param-name> 
 
\t \t \t <param-value>true</param-value> 
 
\t \t </init-param> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingOption</param-name> 
 
\t \t \t <param-value>ALLOW-FROM</param-value> 
 
\t \t </init-param> 
 
\t \t 
 
\t \t <init-param> 
 
\t \t \t <param-name>antiClickJackingUri</param-name> 
 
\t \t \t <param-value>http://localhost:80/*</param-value> 
 
\t \t </init-param> 
 
    </filter> 
 
\t 
 
    <filter-mapping> 
 
     <filter-name>httpHeaderSecurity</filter-name> 
 
     <url-pattern>/*</url-pattern> 
 
     <dispatcher>REQUEST</dispatcher> 
 
    </filter-mapping>

これは、将来的に役に立てば幸い:)

おかげでエディ!

+0

Chromeが依然として「許可」について悲しんでいる場合は、とにかく同じ起源からすべてを提供しているので、 'SAMEORIGIN'に戻してください。あるいは、 'X-Frame-Options'を完全に廃止したければ、私はそれを推奨しません。あなたのvhost設定に' header unset X-Frame-Options'を追加することができます。いずれの方法でもChromeの問題を解決する必要があります。 – AfroThundr