אינטרנט ישראל
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
  • ראשי
  • אודות רן בר-זיק ואינטרנט ישראל
  • ערוץ טלגרם
  • מסטודון
  • התחברו אלי בטוויטר
  • התחברו אלי בלינקדאין
  • ספר ג'אווהסקריפט
ראשי » פיתוח אינטרנט » פתרונות ומאמרים על פיתוח אינטרנט » פתרון פרוקסי לתקשורת AJAX בין דומיינים שונים

פתרון פרוקסי לתקשורת AJAX בין דומיינים שונים

רן בר-זיק יולי 22, 2009 12:04 am אין תגובות

דוגמא לפתרון מבוסס PHP לנושא ה-Cross Domain ב-AJAX

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.

AJAX, ובמיוחד AJAX עם jQuery הוא אחת הדרכים המובילות לקיים אינטראקציה עם המשתמש. על היתרונות של AJAX אין צורך להכביר מילים, אך ל-AJAX יש נקודה חלשה אחת, נושא ה-Cross Domain.

ל-JavaScript, בדומה לפלאש, יש איסור לגשת לדפים הנמצאים על שרת בעל שם דומיין אחר. בניגוד לפלאש, אין לנו יכולת מובנית לעקוף את זה. אם יש לי טופס AJAX על internet-israel.com ואני רוצה שהוא ישלח ויקבל מידע מ-internet-world.com, אין לי דרך לעשות את זה. טופס AJAX עובד אך ורק בדומיין אחד.

איך בכל זאת עושים את זה?

ישנן שלוש דרכים מובילות לעקוף את מגבלת הבטיחות הזו שהושתה על JavaScript. הראשונה היא יצירת פרוקסי. שליחת המידע לדף בשרת שכתוב בשפה ללא מגבלות המאפשרת לו לשלוח מידע אל דומיין אחר, קבלת המידע ושיגורו חזרה אל הסקריפט שלנו. השיטה השניה, המודרנית יותר, נקראת JSONP. לאחר הקריאה במאמר הזה, אפשר לקרוא את המדריך ל-JSONP.

השיטה השלישית היא שימוש בפלאש על מנת לקיים את התקשורת. שיטה זו מוסברת במלואה במאמר על flXHR.

בעוד ששני הפתרונות האחרונים הם בהחלט יותר אלגנטיים, הפתרון של פרוקסי מאפשר לנו לקיים תקשורת עם אתרי אינטרנט שלאו דווקא נבנו על מנת לקיים תקשורת עם סקריפט AJAX או עם פלאש. לדוגמא, אם אני רוצה לסרוק אתר מסוים ולקחת ממנו נתונים רלוונטיים לצורך בניית RSS, השימוש בפרוקסי שידע לקחת את המידע מהאתר השני ולהעביר אותו לסקריפט שלנו הוא קריטי.

קוד פרוקסי לדוגמא:


<?php


// Query string
$fields = '?';

// Prepare the fields for query string, don't include the action URL OR method
foreach ($_REQUEST as $key => $value)
{
    $fields .= $key.'='.$value.'&';
}



// Strip the last comma
$fields = substr($fields, 0, strlen($fields) - 1);

$url = "http://www.othersite.com/page.php".$fields;


// Website url to open
$daurl = $url;
/*
// Get that website is content
$handle = fopen($daurl, "r");

// If there is something, read and return
if ($handle) {
    while (!feof($handle)) {
        $buffer = fgets($handle, 4096);
        echo $buffer;
    }
    fclose($handle);
}
*/

// Get result 
$result = file_get_contents($url);


// Return the response
echo $result;

?>


ועכשיו להסבר. ראשית, אנו מכוונים את היעד של ה-AJAX שלנו (הנה הסבר איך לעשות את זה עם jQuery) אל הפרוקסי שיושב בשרת שלנו. שנית, אנו כותבים את הכתובת שאנו רוצים להגיע אליה ב: http://www.othersite.com/page.php. אנו שולחים את ה-AJAX כרגיל, בצורת post או get. ה-PHP מריץ בדוגמא שלנו את כל שדות ה-request, מצרף אותם כבקשה חדשה וקורא לדף ומחזיר את תוכנו. זה הכל.

הערה חשובה: מבחינת אבטחה אסור באיסור חמור להשתמש בדף הזה שפגיע כמו תינוק בן יומו. על כל שדה ושדה לעבור וולידציה ולעולם אין להשתמש בסקריפט כזה שלוקח את כל השדות שזורקים אליו. הסקריפט הזה הוא לצורך דוגמא ולימוד בלבד. אם אתם לא יודעים למה הוא פגיע, פנו לאיש PHP ואל תשתמשו בו.

כדאי תמיד להשאר מעודכנים! אם יש לכם טלגרם, בדקו את ערוץ הטלגרם של האתר שבו אני מעדכן על פוסטים חדשים 🙂 אם אתם רוצים ללמוד תכנות באופן מקיף ומסודר, הצטרפו לאלפי הלומדים בפרויקט "ללמוד ג'אווהסקריפט בעברית" שמלמד לתכנת בג'אווהסקריפט, ב-Node.js ובריאקט וגם מלמד על תרומה לקוד פתוח. גם ספרים דיגיטליים וגם ספרים מודפסים. בשיתוף הקריה האקדמית אונו ובתמיכת חברות מובילות כגון Wix, Outbrain, Elementor, Iron Source, Chegg, Really Good ועוד.
AJAX פתרונות
ללמוד ג'אווהסקריפט בעברית

ללמוד לתכנת ג'אווהסקריפט בעברית שגייס יותר משלוש מאות אלף שקל ולמעלה מ-2000 תומכים - בואו ללמוד עכשיו איך לתכנת.

רשימת הנושאים
  • מדריכים
    • ריאקט
    • טייפסקריפט
    • ECMAScript 6
    • ES20XX
    • Node.js
    • Express
    • רספברי פיי
    • Babel
    • docker
    • MongoDB
    • Git
    • לימוד MySQL
    • SASS
    • jQuery
    • CSS3
    • HTML 5
    • SVN
    • LESS
  • פיתוח אינטרנט
    • פתרונות ומאמרים על פיתוח אינטרנט
    • jQuery Scripts
    • jQuery למתקדמים
    • יסודות בתכנות
    • נגישות אינטרנט
  • חדשות אינטרנט
  • מידע כללי על אינטרנט
    • רשת האינטרנט
    • בניית אתרי אינטרנט
  • rss logo

    לכל המאמרים

    לכל המאמרים שפורסמו באינטרנט ישראל משנת 2008 ועד עכשיו.
  • rss logo

    RSS Feed

    משתמשים בקורא RSS? אם כן, עקבו אחרי אינטרנט ישראל באמצעות פיד ה-RSS!
    מה זה RSS?
  • Twitter logo

    עקבו אחרי בטוויטר

    בחשבון הטוויטר שלי אני מפרסם עדכונים מהירים על חדשות בתחום התכנות והיזמות, התרעות על מצבי חירום ורכילות בוערת על תחום הווב.
    מה זה טוויטר?
  • facebook like image

    ערוץ הטלגרם של אינטרנט ישראל

    בערוץ הטלגרם של אינטרנט ישראל אני מפרסם את הפוסטים של באתר וכן עדכונים טכנולוגיים נוספים.
    מה זה טלגרם?
  • github logo

    הפרויקטים שלי בגיטהאב

    הפרויקטים שאני כותב ושוחררו לציבור ברישיון קוד פתוח נמצאים ברובם בגיטהאב.
חיפוש

כל הזכויות שמורות לרן בר-זיק ולאינטרנט ישראל | מדיניות הפרטיות של אתר אינטרנט ישראל | אתר אינטרנט ישראל נגיש לפי תקן WCAG 2.0 AA | הצהרת הנגישות של האתר | אבטחת מידע ודיווח על בעיית אבטחת מידע

גלילה לראש העמוד