View Full Version : سوال: نمایش محتویات یک div از سایتی در سایت دیگر
Ali R3ZA
جمعه 01 آبان 1394, 18:56 عصر
سلام و عرض ادب
من یه مشکلی دارم
فقط و فقط میخوام محتویات یه div که تو سایت x هست رو تو سایت y فراخوانی کنم
الان چند روزه دارم کد های مختلف رو بررسی میکنم ولی اصلا نتیجه نگرفتم
چنتا تاپیک هم تو این فروم بودن که اونارو هم دیدم ولی بازم مشکلم پابرجاست
لطفا راهنماییم کنین
نیاز فوری دارم
ممنون
ب ن : دوستان عزیز با ای فریم نمیخوام
نیما عطایی
جمعه 01 آبان 1394, 21:03 عصر
سلام
بدلیل سیاست های امنیتی جاوا اسکریپت و مرورگر ها امکان دریافت اطلاعات از دامینی خارج از دامین جاری وجود ندارد
برای همین میبایست از کتابخانه ها و api های متفاوتی که مبتنی بر دریافت اطلاعات توسط سرور و انتقال به کد جاوا مقصد میباشد استفاده نمایید.
کتابخانه ای که خود من خیلی ازش استفاده کردم cors-anywhere (https://github.com/Rob--W/cors-anywhere/) که میتونید از گیت هاب اونو دریافت نمایید.
به پیوست نمونه استفاده از اون جهت نمایش footer سایت برنامه نویس در صفحه نمونه رو ارسال میکنم
تنها نکته مهم اینه که خروجی این کتابخانه شامل هدر های دریافت صفحه هم میباشد که قبل از پردازش و جستجو div مقصد باید حذف شوند.
<!doctype html><html class="" lang="fa-IR"> <head data-live-domain="jquery.com"> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <meta charset="utf-8"> <title>دريافت اطلاعات از ادرس خارج از دامين جاري با جي کوئري</title> </head><body ><button id="find">شروع</button>
<div id="target"></div> </body><script> var cors_api_url = 'https://cors-anywhere.herokuapp.com/'; function doCORSRequest(options, printResult) { var x = new XMLHttpRequest(); x.open(options.method, cors_api_url + options.url); x.onload = x.onerror = function() { printResult( options.method + ' ' + options.url + '\n' + x.status + ' ' + x.statusText + '\n\n' + (x.responseText || '') ); }; if (/^POST/i.test(options.method)) { x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } x.send(options.data); }
if (typeof console === 'object') { console.log('// To test a local CORS Anywhere server, set cors_api_url. For example:'); console.log('cors_api_url = "http://localhost:8080/"'); } $( "#find" ).click(function() { var targeturl="http://barnamenevis.info"; //ادرس صفحه مورد نظر var dataField =""; doCORSRequest({ method: this.id === 'post' ? 'POST' : 'GET', url:targeturl, data: dataField.value }, function printResult(result) { //نتیجه خروجی در متغیر result قرار خواهد گرفت //در صورتی که هدر نتیجه دریافت صفحه از خروجی حذف نشود امکان پردازش صفحه و یافتن المنت خواص وجود نخواهد داشت result=result.replace("GET " + targeturl,"").replace("200 OK",""); $("#target").html($(result).find('div.footer').html()); }); });</script></html>
Ali R3ZA
شنبه 02 آبان 1394, 00:08 صبح
سلام
بدلیل سیاست های امنیتی جاوا اسکریپت و مرورگر ها امکان دریافت اطلاعات از دامینی خارج از دامین جاری وجود ندارد
برای همین میبایست از کتابخانه ها و api های متفاوتی که مبتنی بر دریافت اطلاعات توسط سرور و انتقال به کد جاوا مقصد میباشد استفاده نمایید.
کتابخانه ای که خود من خیلی ازش استفاده کردم cors-anywhere (https://github.com/Rob--W/cors-anywhere/) که میتونید از گیت هاب اونو دریافت نمایید.
به پیوست نمونه استفاده از اون جهت نمایش footer سایت برنامه نویس در صفحه نمونه رو ارسال میکنم
تنها نکته مهم اینه که خروجی این کتابخانه شامل هدر های دریافت صفحه هم میباشد که قبل از پردازش و جستجو div مقصد باید حذف شوند.
<!doctype html><html class="" lang="fa-IR"> <head data-live-domain="jquery.com"> <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> <meta charset="utf-8"> <title>دريافت اطلاعات از ادرس خارج از دامين جاري با جي کوئري</title> </head><body ><button id="find">شروع</button>
<div id="target"></div> </body><script> var cors_api_url = 'https://cors-anywhere.herokuapp.com/'; function doCORSRequest(options, printResult) { var x = new XMLHttpRequest(); x.open(options.method, cors_api_url + options.url); x.onload = x.onerror = function() { printResult( options.method + ' ' + options.url + '\n' + x.status + ' ' + x.statusText + '\n\n' + (x.responseText || '') ); }; if (/^POST/i.test(options.method)) { x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); } x.send(options.data); }
if (typeof console === 'object') { console.log('// To test a local CORS Anywhere server, set cors_api_url. For example:'); console.log('cors_api_url = "http://localhost:8080/"'); } $( "#find" ).click(function() { var targeturl="http://barnamenevis.info"; //ادرس صفحه مورد نظر var dataField =""; doCORSRequest({ method: this.id === 'post' ? 'POST' : 'GET', url:targeturl, data: dataField.value }, function printResult(result) { //نتیجه خروجی در متغیر result قرار خواهد گرفت //در صورتی که هدر نتیجه دریافت صفحه از خروجی حذف نشود امکان پردازش صفحه و یافتن المنت خواص وجود نخواهد داشت result=result.replace("GET " + targeturl,"").replace("200 OK",""); $("#target").html($(result).find('div.footer').html()); }); });</script></html>
ممنونم استاد عزیز
محبت کردین
اما متاسفانه من یکم مبتدی هستم در این زمینه
امکانش هست یکم باز تر بنده رو راهنماییی بفرمایین ؟
کاری که من کردم این بود که کد هایی که شما محبت کردین و پیوست کردین رو در فایلی با پسوند html روی هاست اپلود کردم و فراخوانیش کردم
در صفحه ای که ظاهر شد ، تنها یک دکمه به نام شروع بود که با کلیک کردن ، هیچ کاری انجام نمیشد !
ممنون میشم اگر نحوه ی استفاده صحیح رو به بنده اموزش بدین
متشکر از شما
نیما عطایی
شنبه 02 آبان 1394, 11:15 صبح
ممنونم استاد عزیز
محبت کردین
اما متاسفانه من یکم مبتدی هستم در این زمینه
امکانش هست یکم باز تر بنده رو راهنماییی بفرمایین ؟
کاری که من کردم این بود که کد هایی که شما محبت کردین و پیوست کردین رو در فایلی با پسوند html روی هاست اپلود کردم و فراخوانیش کردم
در صفحه ای که ظاهر شد ، تنها یک دکمه به نام شروع بود که با کلیک کردن ، هیچ کاری انجام نمیشد !
ممنون میشم اگر نحوه ی استفاده صحیح رو به بنده اموزش بدین
متشکر از شما
سلام
خواهش میکنم
نیازی به اپلود روی سایت نبود
روی سیستم خودتون فایل رو باز میکردید تو مرورگر نتیجه رو میدیدید.
این کد یه درخوایت به سرور https://cors-anywhere.herokuapp.com/ و نتیجه رو بصورت یه استرینگ برمیگردونه
روی سیستم خودتون تست کنید در هنگام تست با مرورگر کروم صفحه رو باز کنید
دکمه f12 روبزنید تا Developer tools باز بشه
تب Console رو باز کنید و صفحه رو رفرش کنید
تمام مراحل اجرا رو میبینید
اگر کد خطایی داد هم میتونید ببینید.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.