Persyaratan:
Domain A memiliki halaman a.html, yang berisi iframe yang berisi halaman b.html dari domain B. Sekarang kita perlu meneruskan nilai kotak teks di halaman a.html ke b.html melalui tombol di a.html . Kotak teks halaman.
Catatan: b.html di sini adalah halaman web html dan tidak dapat menerima nilai yang diposting dari situs web lain, jadi Anda tidak dapat menggunakan metode posting langsung untuk meneruskan nilai. Namun, jika halaman penerima adalah b.aspx atau b.asp, Anda sudah tidak bisa posting langsung? Jawabannya ya, memang bisa, tapi b.asp atau b.aspx harus di-refresh. Bagaimana kita bisa mengubah elemen atau nilai halaman penerima secara dinamis tanpa melakukan refresh? (Proyek lokal IE dapat mencapai akses lintas domain, tetapi akses lintas domain dari jaringan eksternal ditolak secara default. Proyek lokal FireFox dan akses lintas domain dari jaringan eksternal ditolak.)
Prinsip:
Browser melarang akses lintas domain Akses data, tetapi browser tidak melarang transfer nilai pos lintas domain dan lintas bingkai. Kita dapat memposting di domain A ke frame halaman di domain B, dan kemudian menggunakan halaman frame domain B untuk mencapai akses data di domain ini. Ini sebenarnya adalah sedikit trik dalam aplikasi HTML, dan ini mencapai pengiriman data lintas domain tanpa menggunakan pengetahuan tingkat lanjut lainnya.
Metode:
Tambahkan dua halaman di domain B untuk mencapai akses data lintas domain, post.aspx dan main.aspx.
Hubungan halamannya adalah sebagai berikut. a.html di domain A berisi sebuah frame. Alamat halaman frame adalah main.aspx di domain B. main.aspx adalah frameset yang berisi dua frame, (frmMain)b.html dan (frmPost)post
.aspx
.
type=" text" size="20">
http://www.b**.com/main.aspx"> >
Utama dari domain B .aspx:
Pertama-tama kita menyimpan data untuk diteruskan ke domain B ke dalam bentuk a.html, lalu memposting ke post.aspx di domain B.
Saat ini, post.aspx menerima nilainya, dan kemudian mengeksekusi frame induk di domain ini untuk mengakses b.html.
string cmd = Permintaan.Formulir["cmd"];
if (null != cmd && string.Kosong != cmd)
{
Respons.Write(" ");
}
Tidak sulit untuk menemukan lompatan tersebut frame digunakan di sini (yaitu, lapisan bingkai dilompati di tengah) untuk mencapai akses data lintas domain. Artinya, posting ke subframe frame.
Catatan tambahan:
Contoh ini hanyalah solusi untuk akses lintas domain dalam keadaan khusus tertentu, yang mungkin berguna bagi Anda. Karena caranya sederhana, penerapannya memiliki banyak keterbatasan. (Namun, menurut saya ini sangat mirip dengan ajax. Halaman tidak di-refresh dan pemrosesan data sisi server juga selesai^o^).
Materi teks web terkait:
Solusi akses lintas domain untuk aplikasi web.
Teman-teman yang telah melakukan pengembangan Ajax di beberapa situs web tahu bahwa jika di situs A, kami ingin menggunakan Ajax untuk mendapatkan konten tertentu di situs B, jika situs web A dan Situs B. tidak berada dalam domain yang sama, sehingga timbul masalah akses lintas domain. Masalah akses lintas domain Ajax adalah masalah umum yang dihadapi oleh pengembang Ajax yang ada.
IE menangani akses lintas domain dengan memunculkan kotak peringatan untuk mengingatkan pengguna. Jika pengguna memasukkan situs web tersebut sebagai situs web tepercaya atau menurunkan tingkat keamanan, IE tidak akan mengingatkan Anda tentang masalah ini.
Ketika FireFox dan browser non-Microsoft lainnya menghadapi akses lintas domain, solusinya adalah dengan menolak akses.
Ada yang bilang IE adalah browser mainstream, asalkan bisa digunakan secara normal. Ini adalah pernyataan yang buruk. Meskipun IE dapat mengatasinya, ada prasyaratnya. Pengguna harus bersusah payah mengklik Ya setelah kotak peringatan muncul di halaman (mengklik Tidak tidak akan menjalankan panggilan Ajax), atau pengguna menyertakan panggilan Ajax. website sebagai situs terpercaya. Kedua pendekatan ini relatif umum dalam aplikasi sistem manajemen perusahaan, karena administrator sistem dapat menggunakan cara administratif untuk memastikan perilaku pengguna. Namun untuk pengembangan situs web atau portal di Internet, pendekatan ini tidak berhasil.
Saya mengalami masalah ini baru-baru ini. Saya perlu membuat beberapa efek khusus muncul di jendela utama setelah akses lintas domain. Saya mencari beberapa informasi dan menemukan beberapa solusi yang layak melalui upaya terus-menerus dan pengujian kompatibilitas di berbagai browser:
1. Metode proxy web . Artinya, permintaan akses lintas domain ke situs web B yang dihasilkan saat pengguna mengunjungi situs web A dikirimkan ke halaman yang ditentukan di situs web A, dan halaman tersebut menyelesaikan interaksi, bukan halaman pengguna, sehingga memberikan hasil yang sesuai. Solusi ini dapat menyelesaikan sebagian besar masalah akses lintas domain yang dapat dipikirkan pada tahap ini, namun memerlukan situs web A untuk menyediakan dukungan proxy Web. Oleh karena itu, situs web A dan situs web B harus bekerja sama secara erat, dan setiap proses interaksi, server dari situs web A Beban bertambah, dan status sesi tidak dapat disimpan atas nama pengguna.
2. Metode Sesuai Permintaan. Portal MYMSN menggunakan metode ini, namun MYMSN tidak melibatkan masalah akses lintas domain. Kontrol secara dinamis pembuatan tag skrip dan selesaikan panggilan ke halaman lintas domain dengan memodifikasi atribut src dari tag skrip. Kelemahan dalam solusi ini adalah atribut src dari skrip menggunakan metode get untuk menyelesaikan panggilan. Jika string yang diteruskan selama permintaan terlalu besar, string tersebut mungkin tidak berjalan dengan benar. Namun solusi ini sangat cocok untuk portal agregasi.
3. metode iframe. Saya memeriksa postingan tentang akses lintas domain dengan Bangun di javaeye. Dia menyebutkan bahwa dia telah memecahkan masalah akses lintas domain menggunakan iframe. Memang mungkin menggunakan iframe untuk pengiriman dan perolehan data, tetapi karena jendela induk dan jendela anak tidak dapat berinteraksi (dalam kasus akses lintas domain, interaksi ini ditolak), efek pada jendela induk tidak dapat diselesaikan.
(Saya menemukan artikel ini, silakan tambahkan alamat: http://www.javaeye.com/topic/15641 )
4. Metode dump lokal pengguna: IE sendiri mengandalkan karakteristik platform windows untuk memberi kami berbasis iframe , Solusi menggunakan memori untuk "memotong" adalah data dapat dikirim antara dua jendela melalui clipboard windows di klien. Anda hanya perlu mengatur Interval di sisi penerima data untuk polling, dan menghapus Interval setelah mendapatkan hasil. . Independensi platform FF menentukan bahwa ia tidak mendukung metode clipboard, dan kerentanan plug-in di FF versi sebelumnya telah diperbaiki, sehingga FF tidak dapat menyelesaikan penyeberangan rahasia melalui memori. Karena FF tidak menyediakan dukungan untuk pengoperasian file (transfer data lintas domain tidak dapat diselesaikan melalui cookie), metode teknis ini hanya dapat digunakan di IE.
5. Metode saya sendiri untuk memecahkan masalah jenis ini: Menggabungkan metode sebelumnya, ketika mengunjungi situs web A, pertama-tama minta situs web B untuk menyelesaikan pemrosesan data, dan kemudian dapatkan hasil yang diperlukan berdasarkan identifikasi yang dikembalikan. Kekurangan metode ini juga terlihat jelas. Beban situs B meningkat. Keuntungannya adalah sesi juga tetap terjaga, dan kemampuan interaksi antara halaman website A dan website B ditingkatkan. Yang terpenting, solusi ini memenuhi semua kebutuhan saya.
Singkatnya, di antara opsi di atas, saya paling merekomendasikan metode Sesuai Permintaan. Metode ini dapat menyelesaikan sebagian besar masalah Anda tanpa mengirimkan data dalam jumlah besar.
Alamat solusi akses lintas domain untuk aplikasi web: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html