Magnolia:当启用缓存过滤器导致 Facebook 共享无法工作时,范围请求不提供内容
Magnolia: Range request doesn't serve content when cache filter enabled resulting in Facebook Sharing not to work
当向 Magnolia 发送带有 Range
header 的 HTTP 请求时,我收到了一个响应
Content-Length: 0
:
curl -I -X GET \
http://localhost:8080/ \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Range: bytes=0-2000'
HTTP/1.1 206
Set-Cookie: SID=C36D961EC92D152724BBCD0C34EC6536; Path=/; HttpOnly
X-Magnolia-Registration: Registered
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
ETag: 8B4901E7DD862E5E74287A0F538DCDDFEB78DE77
Content-Range: bytes 0-2000/23529
Content-Encoding: gzip
Vary: Accept-Encoding
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Last-Modified: Thu, 19 Dec 2019 08:52:49 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Thu, 19 Dec 2019 08:52:49 GMT
但是,当我禁用 Magnolia 缓存模块时,我得到了预期的响应:
/server/filters/cache
-> enabled: false
curl -I -X GET \
http://localhost:8080/ \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Range: bytes=0-2000'
HTTP/1.1 206
Set-Cookie: SID=FF557EC1F0653E5CBD81A57D599091AE; Path=/; HttpOnly
X-Magnolia-Registration: Registered
Accept-Ranges: bytes
ETag: 2A9DE4F4B2ACDDE22BAC3C07784CD65693574B67
Content-Range: bytes 0-2000/2147483647
Content-Type: text/html;charset=UTF-8
Content-Length: 2001
Date: Thu, 19 Dec 2019 08:51:49 GMT
我遇到了一个问题,即 Facebook 抓取工具在尝试抓取我的网站时无法检测到任何开放图元标记。我认为原因是上述向 Magnolia 发送范围请求时出现的问题(Facebook crawler 的作用)。
我的 Open Graph 标签设置正确(适用于 opengraphcheck 和 Twitter Card Validator)。
我正在使用 Magnolia 5.7.1。
最简单的解决方法是配置请求 header voter 以在范围 header 存在时绕过缓存。
有关如何设置它的更多详细信息,请参阅 RequestHeaderPatternSimpleVoter and/or RequestHeaderPatternRegexVoter,但我仍然认为它是解决方法,而不是最终解决方案。
发生这样的事情似乎很奇怪。你能复制它吗? https://demo.magnolia-cms.com?
当向 Magnolia 发送带有 Range
header 的 HTTP 请求时,我收到了一个响应
Content-Length: 0
:
curl -I -X GET \
http://localhost:8080/ \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Range: bytes=0-2000'
HTTP/1.1 206
Set-Cookie: SID=C36D961EC92D152724BBCD0C34EC6536; Path=/; HttpOnly
X-Magnolia-Registration: Registered
Accept-Ranges: bytes
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
ETag: 8B4901E7DD862E5E74287A0F538DCDDFEB78DE77
Content-Range: bytes 0-2000/23529
Content-Encoding: gzip
Vary: Accept-Encoding
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Last-Modified: Thu, 19 Dec 2019 08:52:49 GMT
Content-Type: text/html;charset=UTF-8
Content-Length: 0
Date: Thu, 19 Dec 2019 08:52:49 GMT
但是,当我禁用 Magnolia 缓存模块时,我得到了预期的响应:
/server/filters/cache
-> enabled: false
curl -I -X GET \
http://localhost:8080/ \
-H 'Accept-Encoding: gzip, deflate' \
-H 'Cache-Control: no-cache' \
-H 'Range: bytes=0-2000'
HTTP/1.1 206
Set-Cookie: SID=FF557EC1F0653E5CBD81A57D599091AE; Path=/; HttpOnly
X-Magnolia-Registration: Registered
Accept-Ranges: bytes
ETag: 2A9DE4F4B2ACDDE22BAC3C07784CD65693574B67
Content-Range: bytes 0-2000/2147483647
Content-Type: text/html;charset=UTF-8
Content-Length: 2001
Date: Thu, 19 Dec 2019 08:51:49 GMT
我遇到了一个问题,即 Facebook 抓取工具在尝试抓取我的网站时无法检测到任何开放图元标记。我认为原因是上述向 Magnolia 发送范围请求时出现的问题(Facebook crawler 的作用)。
我的 Open Graph 标签设置正确(适用于 opengraphcheck 和 Twitter Card Validator)。
我正在使用 Magnolia 5.7.1。
最简单的解决方法是配置请求 header voter 以在范围 header 存在时绕过缓存。
有关如何设置它的更多详细信息,请参阅 RequestHeaderPatternSimpleVoter and/or RequestHeaderPatternRegexVoter,但我仍然认为它是解决方法,而不是最终解决方案。
发生这样的事情似乎很奇怪。你能复制它吗? https://demo.magnolia-cms.com?