Jquery-cookie: Penggunaan encodeURIComponent() pada nilai cookie harus escape()

Dibuat pada 20 Jan 2011  ·  5Komentar  ·  Sumber: carhartl/jquery-cookie

Apakah encodeURIComponent() benar di sini untuk keluar dari nilai cookie? Bukankah itu seharusnya "melarikan diri"?

Cookie masuk dan keluar dari plugin Anda dengan baik, tetapi cookie yang berisi nama path tidak benar-benar dapat digunakan apa adanya oleh orang lain karena pilihan penyandian Anda.

Komentar yang paling membantu

Hanya jika ada orang lain yang menemukan diskusi ini saat mencari jawaban seperti yang saya lakukan:

Cookie diteruskan ke server sebagai header HTTP:

Kuki: nama1=nilai1; nama2=nilai2

Jelas, value1 tidak diperbolehkan mengandung ;

Ada juga karakter bermasalah lainnya.

Faktanya adalah bahwa cookie pada dasarnya terhambat oleh kurangnya pengkodean. Anda harus memilih penyandian dan menggunakannya baik di browser maupun di server.

MDN merekomendasikan encodeURIComponent: https://developer.mozilla.org/en-US/docs/Web/API/document.cookie

Semua 5 komentar

Alasan menggunakan encodeURIComponent / decodeURIComponent adalah karena escape / unescape tidak digunakan lagi .

Selain itu saya belum mengerti apa masalahnya di sini. Nilai cookie berjalan melalui decodeURIComponent sebelum dikembalikan; jadi, kecuali saya melewatkan sesuatu, itu harus sama persis seperti ketika dimasukkan ke dalam cookie. Bisakah Anda memposting inti atau sesuatu untuk menggambarkan masalah ini?

Terakhir, Anda dapat menggunakan opsi raw untuk mem-bypass encoding.

Anda benar tentang hal itu yang ditinggalkan. Mungkin encodeURI() adalah yang benar-benar dibutuhkan alih-alih encodeURIComponent().

Inilah masalahnya secara singkat: Kode Anda hanya berfungsi jika cookie dibuat dan dikonsumsi melalui plugin Anda. Jika Anda membuat cookie dengan plugin Anda dan kemudian mencoba membacanya dari aplikasi php atau java, aplikasi tersebut harus mengetahui bahwa cookie tersebut dikodekan dengan encodeURIComponent() dan harus urldecoded() di backend.

Tempat utama hal ini menyebabkan masalah adalah ketika Anda memasukkan URL atau URI ke dalam cookie. Katakanlah saya ingin memasukkan "/ foo" ke dalam cookie. EncodeURIComponent() memberi saya nama path yang tidak dapat digunakan "%2Ffoo" sementara encodeURI() memberi saya "/foo" yang langsung dapat dikonsumsi oleh sistem backend atau siapa pun yang menggunakan cookie tanpa plugin Anda.

Keuntungan dari encode() di sini sebenarnya adalah jika Anda memiliki titik koma di nilai cookie Anda, itu akan lolos. encodeURI() tidak keluar dari titik koma, jadi Anda harus menambahkan beberapa kode untuk menanganinya selain penggunaan encodeURI().

Raw tidak apa-apa, tapi saya berasumsi mungkin Anda menambahkannya karena orang memiliki masalah dengan penyandian. Jika Anda menggunakan encodeURI(), maka Anda mungkin tidak membutuhkannya lagi.

Alasan saya tidak bisa menggunakan encodeURI :

encodeURI('foo;bar') == "foo;bar"

Tetapi:

encodeURIComponent('foo;bar') == "foo%3Bbar"

Yang terakhir adalah perilaku yang kita inginkan.

raw sebenarnya ditambahkan ke akun untuk bermain bagus dengan server.

Saya ingin tahu mengapa Anda menginginkan perilaku itu? Berjuang untuk menemukan jawaban di tempat lain http://stackoverflow.com/questions/5743119/why-use-encodeuricomponent-when-writing-json-to-a-cookie

Hanya jika ada orang lain yang menemukan diskusi ini saat mencari jawaban seperti yang saya lakukan:

Cookie diteruskan ke server sebagai header HTTP:

Kuki: nama1=nilai1; nama2=nilai2

Jelas, value1 tidak diperbolehkan mengandung ;

Ada juga karakter bermasalah lainnya.

Faktanya adalah bahwa cookie pada dasarnya terhambat oleh kurangnya pengkodean. Anda harus memilih penyandian dan menggunakannya baik di browser maupun di server.

MDN merekomendasikan encodeURIComponent: https://developer.mozilla.org/en-US/docs/Web/API/document.cookie

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

fohlsom picture fohlsom  ·  3Komentar

ghost picture ghost  ·  3Komentar

devfrey picture devfrey  ·  3Komentar

akshaysrin picture akshaysrin  ·  3Komentar

juriansluiman picture juriansluiman  ·  3Komentar