O Drupal e muitos outros sistemas usam um token exclusivo nos formulários para evitar ataques CSRF.
Depois de garantir que os cabeçalhos de Cache-Control corretos foram definidos e que o Safari estava realmente fazendo uma nova solicitação ao servidor para obter o formulário atualizado, o Safari ainda parecia estar enviando um token desatualizado com solicitações AJAX após navegar de volta no navegador, causando eles falhem.
O problema parece ser com o Safari preenchendo novamente os dados do formulário para campos ocultos e pode ser resolvido definindo o atributo autocomplete no campo que contém o token CSRF:
Drupal.behaviors.safariBackAjaxFix = {
attach: function (context, settings) {
/**
* Fix for AJAX requests failing after hitting the back button in Safari.
* Without autocomplete disabled on the hidden form_build_id input,
* Safari resets the form state when navigating back, ignoring the fresh
* form_build_id it needs and using the old one that no longer works.
*/
$('input[name="form_build_id"]').attr('autocomplete', 'off');
}
};
Depois disso, o Safari respeita o token atualizado na entrada e as solicitações AJAX são bem-sucedidas.