Saya mencoba memuat halaman HTML lintas domain menggunakan AJAX tetapi kecuali tipe data "jsonp" saya tidak bisa mendapatkan respons. Namun menggunakan jsonp, peramban mengharapkan jenis skrip mime tetapi menerima "teks / html".
Kode saya untuk permintaan adalah:
$.ajax({
type: "GET",
url: "http://saskatchewan.univ-ubs.fr:8080/SASStoredProcess/do?_username=DARTIES3-2012&_password=P@ssw0rd&_program=%2FUtilisateurs%2FDARTIES3-2012%2FMon+dossier%2Fanalyse_dc&annee=2012&ind=V&_action=execute",
dataType: "jsonp",
}).success( function( data ) {
$( 'div.ajax-field' ).html( data );
});
Apakah ada cara untuk menghindari menggunakan jsonp untuk permintaan? Saya sudah mencoba menggunakan parameter crossDomain tetapi tidak berhasil.
Jika tidak, adakah cara untuk menerima konten html di jsonp? Saat ini konsol mengatakan "tak terduga <" di jsonp reply.
javascript
jquery
ajax
cross-domain
dapat disimpan
sumber
sumber
Jawaban:
Catatan jQuery Ajax
Ada beberapa cara untuk mengatasi penghalang lintas-domain :
Ada beberapa plugin yang membantu dengan permintaan lintas-domain :
Kepala!
Cara terbaik untuk mengatasi masalah ini, adalah dengan membuat proxy Anda sendiri di back-end, sehingga proxy Anda akan menunjuk ke layanan di domain lain, karena di back-end tidak ada batasan kebijakan asal yang sama . Tetapi jika Anda tidak bisa melakukan itu di back-end, maka perhatikan tips berikut.
Peringatan!
Menggunakan proxy pihak ketiga bukanlah praktik yang aman, karena mereka dapat melacak data Anda, sehingga dapat digunakan dengan informasi publik, tetapi tidak pernah dengan data pribadi.
Contoh kode yang ditunjukkan di bawah ini menggunakan jQuery.get () dan jQuery.getJSON () , keduanya adalah metode singkatan dari jQuery.ajax ()
CORS Anywhere
CORS Anywhere adalah proxy node.js yang menambahkan header CORS ke permintaan proksi.
Untuk menggunakan API, cukup awali URL dengan URL API. (Mendukung https : lihat repositori github )
Jika Anda ingin secara otomatis mengaktifkan permintaan lintas domain saat diperlukan, gunakan cuplikan berikut:
Asal apapun
Apapun Asal adalah akses jsonp lintas domain . Ini adalah alternatif sumber terbuka untuk anyorigin.com .
Untuk mengambil data dari google.com, Anda dapat menggunakan potongan ini:
Proxy CORS
CORS Proxy adalah proxy node.js sederhana untuk mengaktifkan permintaan CORS untuk situs web apa pun. Ini memungkinkan kode javascript di situs Anda untuk mengakses sumber daya di domain lain yang biasanya akan diblokir karena kebijakan asal yang sama.
Bagaimana cara kerjanya? CORS Proxy mengambil keuntungan dari Cross-Origin Resource Sharing, yang merupakan fitur yang ditambahkan bersama dengan HTML 5. Server dapat menentukan bahwa mereka ingin browser mengizinkan situs web lain untuk meminta sumber daya yang dihosting. CORS Proxy hanyalah Proxy HTTP yang menambahkan header ke respons yang mengatakan "siapa pun dapat meminta ini".
Ini adalah cara lain untuk mencapai tujuan (lihat www.corsproxy.com ). Yang harus Anda lakukan adalah menghapus http: // dan www. dari URL yang diproksikan, dan tambahkan URL dengan
www.corsproxy.com/
Browser proxy CORS
Baru-baru ini saya menemukan yang satu ini, itu melibatkan berbagai utilitas Cross Origin Remote Sharing yang berorientasi keamanan. Tapi itu adalah kotak hitam dengan Flash sebagai backend.
Anda dapat melihatnya beraksi di sini: Browser proxy CORS
Dapatkan kode sumber di GitHub: koto / cors-proxy-browser
sumber
$.ajaxPrefilter
dan itu berhasil. Terimakasih banyak!Anda dapat menggunakan Ajax-cross-origin sebagai plugin jQuery. Dengan plugin ini Anda menggunakan
jQuery.ajax()
domain silang. Ini menggunakan layanan Google untuk mencapai ini:Sangat mudah digunakan:
Anda dapat membaca lebih lanjut di sini: http://www.ajax-cross-origin.com/
sumber
crossOrigin
Opsi jQuery tentu saja tidak melakukan apa pun untuk memitigasi kebijakan yang sama-asal. Saya akan menghapus jawaban ini jika saya bisaJika situs eksternal tidak mendukung JSONP atau CORS, satu-satunya pilihan Anda adalah menggunakan proxy.
Buat skrip di server Anda yang meminta konten itu, lalu gunakan jQuery ajax untuk menekan skrip di server Anda.
sumber
Masukkan saja ini di header Halaman PHP Anda dan itu tidak berfungsi tanpa API:
atau
atau
sumber
$_SERVER['HTTP_ORIGIN']
datangnya. Saya tidak dapat menemukannya di dokumentasi PHP atau di mana pun.Saya memposting ini jika seseorang menghadapi masalah yang sama dengan yang saya hadapi saat ini. Saya punya printer thermal Zebra, dilengkapi dengan server cetak ZebraNet, yang menawarkan antarmuka pengguna berbasis HTML untuk mengedit beberapa pengaturan, melihat status printer saat ini, dll. Saya perlu mendapatkan status printer, yang ditampilkan di salah satu halaman html tersebut, ditawarkan oleh server ZebraNet dan, misalnya, memberi peringatan () pesan kepada pengguna di browser. Ini berarti saya harus mendapatkan halaman html itu dalam Javascript terlebih dahulu. Meskipun printer berada dalam LAN PC pengguna, Kebijakan Asal Samamasih tetap tegas di jalan saya. Saya mencoba JSONP, tetapi server mengembalikan html dan saya belum menemukan cara untuk memodifikasi fungsinya (jika saya bisa, saya sudah akan mengatur header ajaib Access-control-allow-origin: *). Jadi saya memutuskan untuk menulis aplikasi konsol kecil di C #. Itu harus dijalankan sebagai Admin untuk bekerja dengan baik, jika tidak troll: D pengecualian. Ini beberapa kode:
Yang perlu dilakukan pengguna hanyalah menjalankan aplikasi konsol itu sebagai Admin. Saya tahu ini terlalu ... membuat frustrasi dan rumit, tetapi ini semacam solusi untuk masalah Kebijakan Domain jika Anda tidak dapat memodifikasi server dengan cara apa pun.
edit: dari js saya membuat panggilan ajax sederhana:
Html halaman yang diminta dikembalikan dan disimpan dalam variabel data .
sumber
Untuk mendapatkan data formulir situs eksternal dengan melewati menggunakan proxy lokal seperti yang disarankan oleh jherax Anda dapat membuat halaman php yang mengambil konten untuk Anda dari url eksternal masing-masing dan daripada mengirim permintaan dapatkan ke halaman php itu.
sebagai proxy php Anda dapat menggunakan https://github.com/cowboy/php-simple-proxy
sumber
Anda
URL
tidak berfungsi hari ini, tetapi kode Anda dapat diperbarui dengan solusi yang berfungsi ini:sumber
Anda memerlukan proxy CORS yang mem-proksi permintaan Anda dari browser Anda ke layanan yang diminta dengan header CORS yang sesuai . Daftar layanan tersebut ada dalam cuplikan kode di bawah ini. Anda juga dapat menjalankan cuplikan kode yang disediakan untuk melihat ping ke layanan tersebut dari lokasi Anda.
sumber
Menemukannya. Gunakan ini sebagai gantinya.
sumber