התממשקות לAPI שמציג HTML כמו מפות גוגל וכדו'
-
אני כותב ממשק משתמש, ואני מנסה שיוכלו לשלב אותו בתוך אפליקציה אחרת ככתבו וכלשונו.
כלומר, אני לא רוצה שהAPI רק ישלח לי נתוני json וכדו', אלא שהוא ממש ישלח לי את כל התצוגה.
בעצם שבאפליקציה השניה אני יגדיר דיב שבתוכו תוצג התצוגה שחוזרת מהAPI.
עקרונית זה היה נראה לי ממש פשוט, פשוט לכתוב דיב עם ID מסויים, ולהגדיר בAJAX שאילתא לשרת הAPI עם הנתונים הנדרשים, ואת התצוגה המתקבלת לשתול בדיב הנוכחי.
אלא שהבעיה שלי היא שהדפדפן חוסם פניה מדומיין אחד לדומיין אחר. לשם כך יש את האפשרות לבצע עקיפה תוך שימוש בהפניה לפונקציה וקבלת התשובה כחלק מהפונקציה (מה שנקרא JSONP), אולם אני רוצה לקבל HTML ולא JSON.
האם יש לכך פתרון פשוט? או שאני חייב לבצע את השאילתא משרת לשרת?תודה רבה רבה!!
פורסם במקור בפורום CODE613 ב21/12/2015 23:33 (+02:00)
-
נשמע כמו iframe
אכן כן.
הבעיה היא שניסיתי וזה מחזיר לי את השגיאה הבאה:
Refused to display .... in a frame because it set 'X-Frame-Options' to 'SAMEORIGIN'.מגיגול הבנתי שהבעיה היא שהשרת חוסם אפשרות להריץ זאת בframe אחר בגלל שהוא מוגדר ל:SAMEORIGIN.
מה שלא הצלחתי עדיין למצוא זה איך לשנות את ההגדרה בשרת כדי שאוכל להריץ זאת מכל קוד. אני משתמש בASP.NET MVC4
תודה רבה רבה!
צום מועיל לכולנו, שנתבשר בשורות טובות ישועות ונחמות.פורסם במקור בפורום CODE613 ב22/12/2015 09:42 (+02:00)
-
אוסיף שמצאתי בstackOverFlow את התשובה הבאה ניסיתי זאת וזה לא עבד..
כמו כן ניסיתי את התשובה השניה המוזכרת שם באותו עמוד וגם היא לא עבדה..אשמח לעזרה, תודה רבה מראש!
פורסם במקור בפורום CODE613 ב22/12/2015 10:13 (+02:00)
-
דוד, בדרך כלל אני משתדל שלא לחלוק עליך מכיון שאיני גדול ממנו בחכמה ובמנין וכו'
אבל כאן אני ממש לא מבין ולא יודע למה אתה דבק בקטע של לשים אפליקציה חיצונית בתוך DIV, זה פשוט לא יעבוד
את ה HTML אולי הוא יראה אבל שום דבר אחר לא יעבוד (מתי יקרה ready)?
הפתרון לזה הוא אך ורק IFRAME וזה שהוא לא מצליח לגרום לסרבר שלו לעבוד זה בעיה אחרתאם הפרוייקט הוא רק לצרכי מחקר/לימוד אז יש תוסף לכרום ש"משפץ" את ה HEADER של ה CORS וזה חוסך ממך את הצורך למצוא את הבעיה בשרת שלך
https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbiפורסם במקור בפורום CODE613 ב22/12/2015 23:58 (+02:00)
-
דוד, בדרך כלל אני משתדל שלא לחלוק עליך מכיון שאיני גדול ממנו בחכמה ובמנין וכו'
אבל כאן אני ממש לא מבין ולא יודע למה אתה דבק בקטע של לשים אפליקציה חיצונית בתוך DIV, זה פשוט לא יעבוד
את ה HTML אולי הוא יראה אבל שום דבר אחר לא יעבוד (מתי יקרה ready)?
הפתרון לזה הוא אך ורק IFRAME וזה שהוא לא מצליח לגרום לסרבר שלו לעבוד זה בעיה אחרתתודה רבה על העזרה!
ב' שאלות:
א. מדוע בAPI של גוגל מפות מספיק לעשות דיב ואני לא צריך להשתמש בiFame?
ב. כשאני מדבג בכרום אני רואה שאכן הheader מכיל את ה Access-Control-Allow-Origin:* ,
אולם כמו כן הוא מכיל את X-Frame-Options:SAMEORIGIN
אם כן נשאלת השאלה כיצד אני מסיר את הX-Frame-Options:SAMEORIGIN, כיון שבעטיו נזרקת השגיאה.נ.ב.
יעויין בכתובת הבאה יש כאן אתר שכל עניינו הוא Cross-Origin Resource Sharing, ושם יש מדריכים מפורטים כיצד לאפשר את השאילתות לדומיין אחר.תודה רבה רבה לכולם!!
פורסם במקור בפורום CODE613 ב23/12/2015 10:44 (+02:00)
-
ב"ה אחרי עמל ויגיעה נמצא הפתרון המיוחל.
בקובץ Global.asax צריך להוסיף את השורה הבאה:AntiForgeryConfig.SuppressXFrameOptionsHeader = true;
שנמצאת במרחב השמות הזה: System.Web.Helpers;
הפתרון לקוח מכאן:
והוא נכון גם לMVC4 כיון שכמדומני אני עובד אם זה.. (אא"כ אני טועה ובטעות פתחתי MVC5..)בכל אופן, נספק הסבר קצר:
כאשר שותלים בטופס AntiForgeryToken, כדי למנוע פרצת אבטחה מסוג CSRF.
אז באופן אוטומטי MVC4/5 מוסיפים את ההגדרה הבאה: X-Frame-Options:SAMEORIGIN כדי למנוע פרצת אבטחה שמישהו אחר ישתול את האתר שלך בתוך האתר שלו וכך יוכל לנטר את המידע שלך, ולבצע את הפעולות שהוא רוצה ע"י ההרשאות שלך, מה שנקרא - CSRF.
בהנחה שאנו כן רוצים לאפשר זאת, צריך להוסיף את ההגדרה שכתבתי למעלה.תודה רבה רבה לכולם!!
פורסם במקור בפורום CODE613 ב23/12/2015 11:17 (+02:00)
-
דוד, בדרך כלל אני משתדל שלא לחלוק עליך
אם אתה רציני, אתה עושה עוול לי ולכולם. תמיד תחלוק ותחכים אחרת אלך כסומא בארובה. ואכן תודה לך גם על כל הפעמים שכבר החכמתי ממך..
אבל כאן אני ממש לא מבין ולא יודע למה אתה דבק בקטע של לשים אפליקציה חיצונית בתוך DIV, זה פשוט לא יעבוד
את ה HTML אולי הוא יראה אבל שום דבר אחר לא יעבוד (מתי יקרה ready)?
הפתרון לזה הוא אך ורק IFRAME וזה שהוא לא מצליח לגרום לסרבר שלו לעבוד זה בעיה אחרתטעות שלי, לא שמתי לב לכותרת על גוגל מפות ודמיינתי נסיון לשלוח תצוגה חלקית של MVC לדומיין אחר (שבמחשבה שנייה זה גם משונה מאוד).
פורסם במקור בפורום CODE613 ב23/12/2015 13:20 (+02:00)