Разрешить Cloudflare для кэширования моей страницы индекса с Laravel - PullRequest
0 голосов
/ 20 марта 2020

Я столкнулся с сумасшедшей проблемой, у меня есть веб-сайт, работающий на производстве, и я пытаюсь кэшировать мою индексную страницу, используя "Правила страницы" из cloudflare, чтобы ускорить ее, на ней нет динамического c контента прямо сейчас.

Проблема в том, что это не работает, вероятно, потому что laravel всегда возвращает представление с XSRF-TOKEN и cloudflare будет понимать его как не кэшируемое, я уже изменил заголовок (cache-control : max-age = 36000, publi c), но cloudflare всегда возвращает заголовок "cf-cache-status: BYPASS), когда он должен возвращать HIT.

Когда я пытаюсь использовать одно и то же правило для файла из папки laravel publi c (тот же файл php представления) он работает нормально и возвращает HIT.

Решение, которое я могу подумать, - попытаться удалить этот XSRF-TOKEN из ответа заголовка , но я схожу с ума от того, как это сделать, какие-либо советы?

Обс: я пытался удалить эти куки, используя

            \Config::set('session.driver' , 'array');
            \Config::set('cookie.driver', 'array');

Но это удаляет только один куки, а не XSRF-TOKEN один.

1 Ответ

0 голосов
/ 20 марта 2020

Я полагаю, что вам нужно удалить токен CSRF на страницах, которые вы хотите кэшировать, или внедрить какое-то решение JavaScript, когда токен CSRF запрашивается в тот момент, когда он вам нужен.

Я нашел это статья, которая объясняет вашу ситуацию (нижняя часть статьи):

https://blog.cloudflare.com/the-curious-case-of-caching-csrf-tokens/

Если вы уверены, что вашей странице не нужен токен CSRF (т.е. содержат все функции POST / PUT / DELETE), вы можете удалить токен для этой конкретной страницы и все будет в порядке.

В Laravel CSRF-токен управляется \App\Http\Middleware\VerifyCsrfToken, который должен быть указан в ваше промежуточное ПО в \App\Http\Kernel. Удаление этого промежуточного программного обеспечения удалит его для всех маршрутов, которые используют это промежуточное программное обеспечение; так что вам, вероятно, придется создать отдельную группу промежуточного программного обеспечения для страниц, где вам нужно нужна защита от CSRF.

Возможно, вы также сможете добавить свойство protected $except = [] на вашем VerifyCsrfToken класс промежуточного программного обеспечения. Это свойство содержит массив URL-адресов, которые следует исключить из проверки CSRF. Таким образом, вы можете добавить '/' к этому массиву или подстановочный знак, например '/webhook/*'.

...