Situs saya menggunakan protokol http dan https; itu tidak mempengaruhi konten. Situs saya menggunakan panggilan ajax jQuery, yang juga mengisi beberapa area di halaman.
Sekarang, saya ingin melakukan semua panggilan ajax melalui https. (tolong jangan tanya saya kenapa :)) Ketika saya berada di halaman dengan protokol https, permintaan ajax bekerja. Saat saya berada di halaman dengan protokol http, saya mendapatkan kesalahan javascript: Akses ke URI terbatas ditolak
Saya tahu bahwa ini adalah masalah lintas domain (sebenarnya, ini masalah lintas protokol), dan saya tahu bahwa saya harus menggunakan protokol yang sama dalam panggilan ajax seperti di halaman saat ini.
Namun, saya ingin semua panggilan ajax menjadi https, dan memanggilnya di halaman yang disajikan melalui http. Apakah ada solusi untuk mencapai ini (beberapa solusi json / proxy?), Atau tidak mungkin?
Jawaban:
Tambahkan header Access-Control-Allow-Origin dari server
http://en.wikipedia.org/wiki/Cross-Origin_Resource_Sharing
sumber
Coba JSONP.
sebagian besar perpustakaan JS membuatnya semudah panggilan AJAX lainnya, tetapi secara internal menggunakan iframe untuk melakukan kueri.
jika Anda tidak menggunakan JSON untuk payload Anda, maka Anda harus memutar mekanisme Anda sendiri di sekitar iframe.
Secara pribadi, saya baru saja mengalihkan dari halaman http: // ke https: // satu
sumber
https:
http://example.com/ dapat menyelesaikan ke VirtualHost yang berbeda dari https://example.com/ (yang, karena header Host tidak dikirim, merespons default untuk IP tersebut), sehingga keduanya diperlakukan sebagai terpisah domain dan karenanya tunduk pada pembatasan JS lintasdomain.
Callback JSON memungkinkan Anda menghindari ini.
sumber
Lihat proyek Forge opensource. Ini menyediakan implementasi TLS JavaScript, bersama dengan beberapa Flash untuk menangani permintaan lintas domain yang sebenarnya:
http://github.com/digitalbazaar/forge/blob/master/README
Singkatnya, Forge akan memungkinkan Anda membuat XmlHttpRequests dari halaman web yang dimuat melalui http ke situs https. Anda perlu memberikan file kebijakan lintas domain Flash melalui server Anda untuk mengaktifkan permintaan lintas domain. Lihat posting blog di akhir README untuk mendapatkan penjelasan yang lebih mendalam tentang cara kerjanya.
Namun, saya harus menyebutkan bahwa Forge lebih cocok untuk permintaan antara dua domain https yang berbeda. Pasalnya, ada potensi serangan MiTM. Jika Anda memuat JavaScript dan Flash dari situs yang tidak aman, ini dapat disusupi. Penggunaan yang paling aman adalah memuatnya dari situs yang aman dan kemudian menggunakannya untuk mengakses situs lain (aman atau tidak).
sumber
Anda dapat mencoba memuat halaman https dalam iframe dan merutekan semua permintaan ajax masuk / keluar dari bingkai melalui beberapa jembatan, ini adalah peretasan tetapi mungkin berhasil (tidak yakin apakah itu akan memberlakukan pembatasan akses yang sama mengingat konteks aman) . Jika tidak, proxy http lokal untuk merutekan ulang permintaan (seperti panggilan lintas domain) akan menjadi solusi yang diterima.
sumber
Inilah yang saya lakukan:
Buat iFrame tersembunyi dengan data yang ingin Anda posting. Karena Anda masih mengontrol iFrame tersebut, asal yang sama tidak berlaku. Kemudian kirimkan formulir di iFrame itu ke halaman ssl. Halaman ssl kemudian dialihkan ke halaman non-ssl dengan pesan status. Anda memiliki akses ke iFrame.
sumber