Bagaimana cara mashup bekerja dengan kebijakan yang sama?


Jawaban:


7

Solusi lintas browser

JSONP

Jika API yang Anda coba akses mendukung JSONP , Anda hanya perlu memberikan nama fungsi javascript dalam permintaan Anda, maka JSONP mengembalikan javascript seperti myfunc({the:data});yang dapat Anda jalankan seperti javascript biasa, itulah sebabnya Anda akan membuat <script src="www.website.com/somecall?jsonp=myfunc">tag baru untuk "mengirim permintaan" (jQuery melakukan ini secara otomatis jika Anda menggunakan type: jsonpdalam $.ajaxpermintaan).

Kelemahannya adalah ia membutuhkan penyedia API untuk mendukung JSONP.

Flash

Flash dapat mengakses konten lintas domain selama situs web target memiliki crossdomain.xmlfile pada akarnya yang menyatakan memungkinkan, yang biasanya terjadi pada server yang menyediakan API).

Kelemahannya adalah ia membutuhkan Flash di peramban pengguna dan situs web tempat Anda mendapatkan data harus memiliki crossdomain.xml yang memungkinkan permintaan lintas-domain.

Skrip sisi server pada nama domain yang sama

Bahasa sisi server seperti PHP tidak memiliki batasan domain yang sama dengan BS, sehingga Anda dapat memiliki skrip yang bertindak sebagai proksi (mis. Unduh melalui salah satu ekstensi http seperti cURL).

Manfaat tambahannya adalah Anda dapat membersihkan data (atau bahkan mashup banyak sumber) di server, sebelum meneruskannya ke halaman web / javascript Anda, sehingga Anda bahkan dapat mengekstrak hanya bagian data yang berguna, yang bagus ketika melakukan webapp seluler di mana bandwidth bisa menjadi masalah.

The downside adalah bahwa semua permintaan harus melalui server Anda, sehingga meningkatkan beban di server Anda.

Namun manfaatnya adalah ia akan bekerja dengan sumber daya apa pun karena tidak memerlukan target untuk mendukung crossdomain atau jsonp. Jadi jika tidak ada yang berhasil, ini akan berhasil.


Solusi khusus untuk beberapa browser

Internet Explorer

Internet Explorer memiliki Permintaan Lintas Domain

Firefox

Firefox 3.5+ memiliki standar berbagi asal , tetapi memerlukan sumber daya yang Anda coba akses untuk menyertakan header khusus, misalnya dalam PHP:

header("content-type: Access-Control-Allow-Origin: *");
header("content-type: Access-Control-Allow-Methods: GET");

Beberapa peramban utama lain mendukung ini juga , jadi jika Anda tidak perlu mendukung peramban lama dan jika Anda bisa mendapatkan sumber daya yang Anda coba akses untuk mengirim tajuk tersebut, ini mungkin yang terbaik, jika tidak sisi server skrip akan menjadi rekomendasi saya.


Firefox juga memiliki pengaturan pengguna capability.policy.default.XMLHttpRequest.open, tetapi saya tidak akan mengandalkan pengguna mengubah pengaturan di browser-nya.


0

Anda dapat menggunakan API (dari domain lain) untuk itu. Javascript Anda akan memanggil file PHP (atau file skrip lainnya) yang ada di server web Anda (domain Anda), yang akan memanggil API (dari domain lain menggunakan CURL) dan mendapatkan respons kepada Anda.


Jawaban ini tidak perlu terlalu spesifik tentang teknologi yang digunakan di server.
funkybro

@ funkybro ya, itu hanya sebuah contoh ... tidak ada yang spesifik ...
Harish Kurup
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.