繁体   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