簡體   English   中英

修改tomcat上靜態資產的header cookie並用apache httpd代理

[英]Modify header cookies for static assets on tomcat and proxied with apache httpd

我們有一個基於 java servlet 的應用程序(非常舊的代碼庫),它與帶有 Apache httpd 2.4.43 和 mod_proxy 的 tomcat 8 一起提供。 應用程序有一些與 Java Web 應用程序捆綁在一起的靜態資產(CSS、CS、IMAGES)。

我正在嘗試通過添加 apache 規則來修改這些資產的 Header cookie,但似乎這可能不起作用,因為文件不在 apache 級別內?

<FilesMatch ".(js|css)$">
Header edit Set-Cookie (.*) "$1;HttpOnly;Secure;SameSite=Strict"
</FilesMatch>

我嘗試在沒有FilesMatch條件的情況下添加規則並且它有效,但這不是我需要的。 關於如何在 Apache 級別完成此操作的任何想法。 這是httpd conf的摘錄

<VirtualHost *:443>

        DocumentRoot "/apps/httpd/htdocs1"
        ServerName www.mydomain.com
        ServerAlias mydomain.com

        RewriteEngine on
        RewriteCond %{REQUEST_URI}    ^/version$
        RewriteRule ^/.*$             /version.html  [R=301,L]

   
      RewriteCond %{HTTP_HOST} !^www\. [NC]
      RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L]


   <Proxy balancer://${HOSTNAME}-http-cluster>

        Header add Set-Cookie "MYAPP_SESSION=jacplus.%{BALANCER_WORKER_ROUTE}e;path=/;"

              BalancerMember http://myhost-002:31080 min=1 max=1000 loadfactor=1 retry=1 timeout=240 route=myhost-002
              BalancerMember http://myhost-003:31080 min=1 max=1000 loadfactor=1 retry=1 timeout=240 route=myhost-003


   </Proxy>

   ProxyPass / balancer://${HOSTNAME}-http-cluster/ stickysession=MYAPP_SESSION  lbmethod=byrequests
   ProxyPassReverse / balancer://${HOSTNAME}-http-cluster/ stickysession=MYAPP_SESSION

   <Location /balancer-manager>
    SetHandler balancer-manager
    Order deny,allow
    Deny from all
    Allow from 10.25.0.0/16
   </Location>
...

</VirtualHost>

來自mod_header的 apache 文檔:

當且僅當請求中存在頭 MyRequestHeader 時,有條件地在響應上發送 MyHeader。 這對於構建響應某些客戶端刺激的標頭很有用。 請注意,此示例需要 mod_setenvif 模塊的服務。

 SetEnvIf MyRequestHeader myvalue HAVE_MyRequestHeader Header set MyHeader "%D %t mytext" env=HAVE_MyRequestHeader

來自重寫標志的文檔

使用 [E] 或 [env] 標志,您可以設置環境變量的值。 請注意,某些環境變量可能會在規則運行后設置,從而取消您設置的設置。 有關環境變量如何工作的更多詳細信息,請參閱環境變量文檔。

結合兩者,您可以在路徑匹配 js 或 css 文件時有條件地修改標題:

RewriteRule ^.*\.(js|css)$ - [E=SET_COOKIE:true]
Header edit Set-Cookie (.*) "$1;HttpOnly;Secure;SameSite=Strict" env=SET_COOKIE

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM