Как редактировать набор повара ie через mod_rewrite? - PullRequest
0 голосов
/ 04 февраля 2020

Я использую mod_rewrite, чтобы установить несколько файлов cookie, а затем перенаправить пользователя на целевой URL. Поскольку эти файлы cookie используются в сторонних средах, я должен установить флаг SameSite = none. Я попытался отредактировать заголовок Set-Cook ie с помощью mod_headers, но у меня не получилось.

My Apache config:

<VirtualHost *:80>
  ServerName www.example.test
  RewriteEngine on
  RewriteRule ^/test/(.*)$  /test/$1  [CO=cookie1:1:.example.test:86400:/:true:true]
  RewriteRule ^/test/(.*)$  /test/$1  [CO=cookie2:$1:.example.test:86400:/:true:true]
  RewriteRule ^/test/(.*)$ http://www.example.test/test2/$1 [R,L]
  Header always edit Set-Cookie ^(.*)$ "$1; SameSite=none"
  Header always set X-Foo "bar"
  Header always edit X-Foo ^(.*)$ "$1; SameSite=none"
</VirtualHost>

Мой тестовый запрос:

Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Date: Tue, 04 Feb 2020 09:12:23 GMT
  Server: Apache/2.4.6 (CentOS) PHP/7.2.27
  X-Foo: bar; SameSite=none
  Set-Cookie: cookie1=1; path=/; domain=.example.test; expires=Sat, 04-Apr-2020 09:12:23 GMT; secure; HttpOnly
  Set-Cookie: cookie2=0815; path=/; domain=.example.test; expires=Sat, 04-Apr-2020 09:12:23 GMT; secure; HttpOnly
  Location: http://www.example.test/test2/0815
  Content-Length: 218
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=iso-8859-1
Cookie coming from 127.0.0.1 attempted to set domain to 127.0.0.1
Cookie coming from 127.0.0.1 attempted to set domain to 127.0.0.1
Location: http://www.example.test/test2/0815

Почему редактируется заголовок X-Foo, а заголовки Set-Cook ie - нет?

1 Ответ

0 голосов
/ 05 февраля 2020

Я наконец получил его - вы можете установить флаг SameSite в RewriteRule:

<VirtualHost *:80>
  ServerName www.example.test

  RewriteEngine on

  RewriteRule ^/test/(.*)$  /test/$1  [CO=cookie1:1;\ SameSite=none:.example.test:86400:/:true:true]
  RewriteRule ^/test/(.*)$  /test/$1  [CO=cookie2:$1;\ SameSite=none:.example.test:86400:/:true:true]

  RewriteRule ^/test/(.*)$ http://www.example.test/test2/$1 [R,L]

</VirtualHost>

Теперь я получаю следующий ответ:

wget --server-response --header "Host: www.example.test" "http://127.0.0.1/test/0815"
--2020-02-05 11:15:15--  http://127.0.0.1/test/0815
Connecting to 127.0.0.1:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 302 Found
  Date: Wed, 05 Feb 2020 10:15:15 GMT
  Server: Apache/2.4.6 (CentOS) PHP/7.2.27
  Set-Cookie: cookie1=1; SameSite=none; path=/; domain=.example.test; expires=Sun, 05-Apr-2020 10:15:15 GMT; secure; HttpOnly
  Set-Cookie: cookie2=0815; SameSite=none; path=/; domain=.example.test; expires=Sun, 05-Apr-2020 10:15:15 GMT; secure; HttpOnly
  Location: http://www.example.test/test2/0815
  Content-Length: 218
  Keep-Alive: timeout=5, max=100
  Connection: Keep-Alive
  Content-Type: text/html; charset=iso-8859-1
Cookie coming from 127.0.0.1 attempted to set domain to 127.0.0.1
Cookie coming from 127.0.0.1 attempted to set domain to 127.0.0.1
Location: http://www.example.test/test2/0815 [following]
...