Mengatasi Cookies Terhapus Setelah Redirect dari Website Lain

Sebagai programmer web kita tidak bisa lepas dari Web Browser. Tanpa Web Browser aplikasi yang kita kembangkan mustahil dapat digunakan oleh user. Sayangnya, kita tidak bisa mengontrol jenis Web Browser dan versi Web Browser yang digunakan oleh client. Versi Web Browser yang terlalu kuno, tentu saja dapat menyebabkan aplikasi kita tidak berjalan semestinya. Versi Web Browser yang terbaru kadang juga dapat menyebabkan masalah. Paling tidak saya telah memiliki 3 pengalaman tidak mengenakkan mengenai update versi Web Browser terbaru yang mengakibatkan aplikasi yang saya kembangkan menjadi tidak berjalan semestinya.

Pengalaman yang pertama adalah saat aplikasi yang kami (tempat kerja) kembangkan tiba-tiba tidak dapat print dari web ke printer langsung, padahal sebelumnya lancar-lancar saja. Ternyata, karena saat itu library yang kami gunakan masih menggunakan java applet, sedangkan Web Browser versi terbaru (automatic update) yang digunakan user saat itu menolak java applet karena dianggap tidak secure. Untungnya pembuat library cukup tanggap dan segera membuat versi yang tidak menggunakan java applet lagi.

Pengalaman kedua, saat kami (tempat kerja) harus menyambungkan aplikasi yang kami kembangkan dengan sebuah hardware. Untuk mendapatkan data dari hardware itu kami harus melakukan ajax request ke sebuah aplikasi bawaan hardware tersebut yang di install di komputer user, jadi kami harus mengirim ajax request ke localhost. Awalnya aplikasi yang kami buat berjalan lancar, tapi setelah beberapa bulan Web Browser yang digunakan user melakukan automatic update ke versi terbaru. Ternyata di versi terbaru Web Browser itu menolak koneksi ke localhost jika tidak ada Access-Control-Allow-Origin: * di header respon. Kami sudah mencoba untuk mengontak distributor penyedia hardware untuk menambahkan kode diatas, agar tidak error CORS lagi. Sayangnya permintaan kami ditolak. Untungnya ada beberapa addons yang bisa mengatasi masalah ini.

Pengalaman ketiga, yang baru saja saya alami, yaitu saat kami mengembangkan sebuah addons odoo untuk menerima pembayaran di e-commerce. Saat user melakukan order di e-commerce, saat user melakukan pembayaran, user akan diarahkan ke website payment gateway. Setelah user menyelesaikan pembayaran di website payment gateway, user akan diredirect ke website e-commerce lagi. Pada awalnya proses ini berjalan lancar dan sudah diterapkan di server client selama beberapa bulan.

Tetapi setelah ada update terbaru pada Web Browser saat user dari payment gateway diredirect ke website e-commerce lagi, tiba-tiba dia ter-logout sehingga dia tidak bisa melihat pesanannya. Terpaksa user harus login lagi, dan ini tentu saja merepotkan.

Setelah saya telusuri, ternyata saat user dari website payment gateway diredirect ke website e-commerce lagi, cookies yang tersimpan di browser di-replace oleh Web Broser, sehingga dia dianggap belum login oleh odoo. Setelah berselancar di berbagai forum, ternyata ini dialami oleh banyak user, tidak hanya pengguna odoo tapi juga pengguna aplikasi/framework lain. Jadi ini bukan bug di odoo atau di addons yang kami kembangkan.

Lalu apakah ada solusi untuk mengatasi ini ?

Untuk mengatasi masalah ini kita harus menambah beberapa konfigurasi pada cookies. Kita bisa menambahkannya di odoo langsung atau di web server (Nginx/Apache). Saya memilih untuk menambah konfigurasi ini di web server sesuai saran beberapa user di beberapa forum. Karena saya menggunakan Nginx saya harus menambahkan kode seperti dibawah ini di konfigurasi Nginx.

proxy_cookie_path / "/; SameSite=None; HTTPOnly; Secure";

Restart service Nginx. Kemudian buka aplikasi di Web Browser. Pada developer tools di bagian Response Header pastikan konfigurasi yang ditambahkan sudah terlihat, seperti pada gambar di bawah ini.

Pengaturan cookies odoo

Penting !!! Gunakan HTTPS

Selanjutnya pastikan untuk menggunakan https. Karena walaupun konfigurasi cookies sudah ditambahkan, kalau aplikasi yang kita buat dibuka tidak dari https konfigurasi cookies tersebut akan ditolak oleh Web Browser, seperti pada gambar di bawah ini.

Pengaturan cookies odoo yang salah

Demikian, semoga pengalaman ini berguna bagi anda.

Tulisan Serupa

Leave a Reply