jQuery Ajax Notes
- เนื่องจากข้อ จำกัด ของการรักษาความปลอดภัยเบราว์เซอร์ส่วนใหญ่อาแจ็กซ์คำขออยู่ภายใต้นโยบายกำเนิดเดียวกัน ; คำขอไม่สามารถดึงข้อมูลจากโดเมนโดเมนย่อยพอร์ตหรือโปรโตคอลอื่นได้สำเร็จ
- คำขอสคริปต์และ JSONP ไม่อยู่ภายใต้ข้อ จำกัด ของนโยบายต้นทางเดียวกัน
มีบางวิธีในการเอาชนะอุปสรรคข้ามโดเมน :
มีปลั๊กอินบางตัวที่ช่วยในการร้องขอข้ามโดเมน :
โปรดทราบ!
วิธีที่ดีที่สุดในการแก้ไขปัญหานี้คือการสร้างพร็อกซีของคุณเองในส่วนหลังเพื่อให้พร็อกซีของคุณชี้ไปที่บริการในโดเมนอื่นเนื่องจากในส่วนหลังไม่มีข้อ จำกัด ของนโยบายต้นทางเดียวกัน แต่ถ้าคุณไม่สามารถทำได้ในส่วนหลังให้ใส่ใจกับเคล็ดลับต่อไปนี้
คำเตือน!
โดยใช้พร็อกซีของบุคคลที่สามไม่ได้มีการปฏิบัติที่เชื่อถือได้เพราะพวกเขาสามารถติดตามข้อมูลของคุณเพื่อที่จะสามารถนำมาใช้กับข้อมูลสาธารณะ แต่ไม่เคยมีข้อมูลส่วนตัว
ตัวอย่างโค้ดที่แสดงด้านล่างใช้jQuery.get ()และjQuery.getJSON ()ทั้งสองเป็นวิธีการชวเลขของjQuery.ajax ()
CORS ได้ทุกที่
CORS Anywhere เป็นพร็อกซี node.jsซึ่งเพิ่มส่วนหัว CORS ให้กับคำขอพร็อกซี
ในการใช้ API เพียงนำหน้า URL ด้วย URL ของ API (รองรับhttps : ดูที่เก็บ github )
หากคุณต้องการเปิดใช้งานคำขอข้ามโดเมนโดยอัตโนมัติเมื่อจำเป็นให้ใช้ข้อมูลโค้ดต่อไปนี้:
$.ajaxPrefilter( function (options) {
if (options.crossDomain && jQuery.support.cors) {
var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
options.url = http + '//cors-anywhere.herokuapp.com/' + options.url;
}
});
$.get(
'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
ต้นกำเนิดอะไรก็ตาม
ไม่ว่า Originคือการเข้าถึงjsonp ข้ามโดเมน นี้เป็นทางเลือกที่มาเปิดให้anyorigin.com
ในการดึงข้อมูลจากgoogle.comคุณสามารถใช้ข้อมูลโค้ดนี้:
$.ajaxSetup({
scriptCharset: "utf-8",
contentType: "application/json; charset=utf-8"
});
$.getJSON('http://whateverorigin.org/get?url=' +
encodeURIComponent('http://google.com') + '&callback=?',
function (data) {
console.log("> ", data);
$("#viewer").html(data.contents);
});
CORS Proxy
CORS Proxy เป็นพร็อกซี node.js ที่เรียบง่ายเพื่อเปิดใช้งานการร้องขอ CORS สำหรับเว็บไซต์ใด ๆ ช่วยให้โค้ดจาวาสคริปต์บนไซต์ของคุณเข้าถึงทรัพยากรบนโดเมนอื่น ๆ ที่ปกติจะถูกบล็อกเนื่องจากนโยบายแหล่งกำเนิดเดียวกัน
มันทำงานอย่างไร? CORS Proxy ใช้ประโยชน์จาก Cross-Origin Resource Sharing ซึ่งเป็นคุณลักษณะที่เพิ่มเข้ามาพร้อมกับ HTML 5 เซิร์ฟเวอร์สามารถระบุได้ว่าต้องการให้เบราว์เซอร์อนุญาตให้เว็บไซต์อื่นร้องขอทรัพยากรที่โฮสต์ได้ CORS Proxy เป็นเพียง HTTP Proxy ที่เพิ่มส่วนหัวให้กับคำตอบที่ระบุว่า "ทุกคนสามารถร้องขอได้"
นี่เป็นอีกวิธีหนึ่งในการบรรลุเป้าหมาย (ดูwww.corsproxy.com ) สิ่งที่คุณต้องทำคือตัดhttp: //และwww. จาก URL ที่พร็อกซีและนำหน้า URL ด้วยwww.corsproxy.com/
$.get(
'http://www.corsproxy.com/' +
'en.wikipedia.org/wiki/Cross-origin_resource_sharing',
function (response) {
console.log("> ", response);
$("#viewer").html(response);
});
CORS พร็อกซีเบราว์เซอร์
เมื่อเร็ว ๆ นี้ฉันพบสิ่งนี้มันเกี่ยวข้องกับยูทิลิตี้ Cross Origin Remote Sharing ด้านความปลอดภัย แต่เป็นกล่องดำที่มี Flash เป็นแบ็กเอนด์
คุณสามารถดูการทำงานได้ที่นี่: CORS proxy browser
รับซอร์สโค้ดบน GitHub: koto / cors-proxy-browser