Почему cookie-файл jsessionid теряется / сбрасывается при использовании Datatables «кнопки: удлинить: печать» в Firefox? - PullRequest
0 голосов
/ 10 июля 2019

Я использую кнопки "Datatables": extend: print ", чтобы напечатать таблицу.

Когда я нажимаю кнопку «Печать», она открывает новую вкладку браузера с таблицей и отображает диалоговое окно печати Firefox, чего я и ожидаю, но также сбрасывает cookie-файл JSESSIONID, что означает, что пользователь фактически вышел из системы. Пользователь вынужден снова войти в систему, когда он попытается нажать обновить или перейти на другую страницу.

Если я пытаюсь экспортировать PDF (через extend: 'pdf'), он работает нормально. Проблема возникает только для печати и только в Firefox. Сессия не теряется ни в Safari, ни в Chrome. Я использую Firefox 68.0, но это также происходило в 67 (я не тестировал более ранние версии).

Не имеет значения, если stateSave равно true, false или опущено.

<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/bs/dt-1.10.18/datatables.min.css"/>
<script type="text/javascript" src="https://cdn.datatables.net/v/bs/dt-1.10.18/datatables.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.6/js/dataTables.buttons.min.js"></script>
<script type="text/javascript" src="https://cdn.datatables.net/buttons/1.5.6/js/buttons.print.min.js"></script>

function init() {
  $.fn.dataTable.moment( 'DD/MM/YYYY' );
  $.fn.dataTable.moment( 'MM/DD/YYYY' );
  $.fn.dataTable.moment( 'MMM D, YYYY' );

  dtApi = $('.mydatatableclass').DataTable( {
  "pageLength": 50,
  "lengthChange": false,
  "order": [[ 1, "asc" ]],
  stateSave: true,
  "columnDefs": [
    { "visible": false, "targets": 10 },
    { "orderable": false, "targets": [0,3,8,9] }
  ],
  buttons: [
    {
      extend: 'print',
      exportOptions: {
        columns: [1,2,4,5,6,7,10]
      }
    }
  ]
} );
<a href="#" onclick="$('.mydatatableclass').DataTable().button( '.buttons-print' ).trigger();">Print Table</a>

Я ожидаю, что файл cookie JSESSIONID не изменится, когда будет создана новая вкладка браузера для печати. ​​

Дополнительная информация: JSESSIONID - это файл cookie, генерируемый контейнерами сервлетов, такими как Tomcat или Jetty, и используемый для управления сеансами. Похоже, что Datatables удаляет cookie при использовании функции печати (которая открывает новое окно браузера).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...