Shinyproxy: [Laporan Bug] Kesalahan Ajax setelah lama menganggur dengan auth diaktifkan

Dibuat pada 25 Mar 2019  ·  9Komentar  ·  Sumber: openanalytics/shinyproxy

Sebagai contoh, katakanlah Anda memiliki aplikasi sederhana di bawah ini. Perhatikan bahwa tabel DT menggunakan ajax ketika server = TRUE (mode pemrosesan server).

library(shiny)
ui <- fluidPage(DT::DTOutput('tbl'))
server <- function(input, output, session) {
  output$tbl <- DT::renderDT(iris, server = TRUE)
}
runApp(list(ui = ui, server = server))

Saat auth diaktifkan (metode auth apa pun), Anda membuka browser dan masuk ke aplikasi dan semuanya berfungsi dengan baik (seperti klik tombol halaman di bawah tabel). Namun, setelah lama menganggur (30 menit atau 1 jam), klik tombol halaman Anda akan menemukan keluhan DT kesalahan ajax. Cara mengatasinya sederhana: refresh halaman atau buka saja koneksi baru ke Shinyproxy dan lakukan login ulang. Tapi itu sangat membingungkan pengguna.

Hal ini karena setelah lama idle, Shinyproxy mengharuskan Anda untuk login ulang untuk koneksi baru tetapi koneksi yang ada masih valid. Ini memiliki efek samping bahwa posting AJAX yang coba dilakukan oleh aplikasi yang ada akan ditolak oleh server, karena Shinyproxy menganggapnya sebagai koneksi baru ...

Cara untuk mengatasi ini saya percaya adalah untuk

  • putuskan sambungan aplikasi yang ada kapan pun diperlukan login ulang (alias, batas waktu), atau
  • mengenali koneksi AJAX yang dilakukan oleh aplikasi yang ada sebagai valid / resmi...

Terima kasih.

bug

Komentar yang paling membantu

@shrektan Saya memiliki masalah serupa, dan OpenAnalytics membantu saya memperbaikinya:
Ubah batas waktu undertow (yang secara default adalah 30 menit).

server:
  servlet.session.timeout: 3600

Di bawah ini dalam hitungan detik - setel ke 0 jika Anda tidak ingin waktu habis.
Terima kasih, Dylan

Semua 9 komentar

@shrektan Saya memiliki masalah serupa, dan OpenAnalytics membantu saya memperbaikinya:
Ubah batas waktu undertow (yang secara default adalah 30 menit).

server:
  servlet.session.timeout: 3600

Di bawah ini dalam hitungan detik - setel ke 0 jika Anda tidak ingin waktu habis.
Terima kasih, Dylan

@dylancis Terima kasih atas solusinya! Dihargai!

Namun, saya akan membiarkan masalah terbuka karena IMHO, lebih baik untuk memutuskan sambungan aplikasi yang ada saat sesi habis.

@dylancis BTW, sedikit di luar topik, sudahkah Anda mencoba rilis baru Shinyproxy dengan tabel DT? Saya belum melihat penyebabnya tetapi saya melihat kesalahan AJAX yang mengatakan metode POST tidak dapat diterima.

>

@dylancis BTW, sedikit di luar topik, sudahkah Anda mencoba rilis baru Shinyproxy dengan tabel DT? Saya belum melihat penyebabnya tetapi saya melihat kesalahan AJAX yang mengatakan metode POST tidak dapat diterima.

oups - tidak, saya belum melakukannya.

Juga untuk saya - saya beralih dari 2.1 ke 2.2 dan sekarang bahkan tidak ada satu pun renderDataTable berfungsi. Banyak kesalahan AJAX mengarahkan saya ke halaman ini http://datatables.net/tn/7

Saya yakin ini bug... Sebenarnya, buka alat pengembang dan Anda dapat melihat respons dari permintaan AJAX - Metode POST tidak dapat diterima oleh server tetapi GET tidak apa-apa...

Hai @shrektan, sudahkah Anda mengangkat masalah aprikot ini tentang DT? Kami berencana untuk meningkatkan tetapi aplikasi kami sangat bergantung pada perpustakaan yang dapat didata.

@dylancis Baru saja mengajukan masalah baru tentang bug ini di #140

Seperti yang disebutkan @dylancis , meningkatkan server.servlet.session.timeout akan menghindari masalah ini.
Tetapi saya setuju bahwa akan lebih baik jika batas waktu sesi ditunda secara otomatis selama ada saluran websocket terbuka (yang memicu detak jantung dan dengan demikian membuat wadah tetap hidup).

Catatan: komentar ini tentang kedaluwarsa sesi yang menghasilkan 401 tanggapan (tidak sah). Ini bukan tentang masalah ajax POST yang menghasilkan 405 (metode tidak diizinkan) tanggapan.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat