שלום לכולם!
יש אתר (צד לקוח) ששולח בקשת ajax לשרת. אין לי את הקוד צ"ל. הוא מבקש מווב-סרויס הפעלת מתודות בשיטת post ומצפה לקבל בחזרה אובייקטי json.
בשרת אני נעזר במסמך htaccess עם הרבה חוקי rewrite.
חלק מהם מעבירים בקשות של הלקוח לשיטות בווב-סרויס שאני בונה.
יש קריאות שאני משאיר בשיטת פוסט כמו בחוק הבא:
RewriteCond %{HTTP_REFERER} ^---/(.*)/Bing$ [NC]
RewriteRule /ActivitiesService.asmx/GetLatest$ ---%1/ActivitiesService.asmx/GetLatestSearchAc... [NC,L,P]
ויש שאני מפנה אותן לurl בצורת query string. כמו בחוק הבא:
RewriteCond %{HTTP_REFERER} ^---/(.*)/([0-9]+) [NC]
RewriteRule /ActivitiesService.asmx/GetLatest$ ---/%1/ActivitiesService.asmx/GetLatestByActivi... [NC,L,R=301]
עשיתי זאת כדי להוסיף פרמטר (שנוסף דינאמית, אני לא יכול לכתוב את הפרמטר הארד-קודד)
ולא מצאתי אפשרות להוסיף פרמטר ולשמור על השיטה בתור post.
אני כותב את הצ"ש - הווב-סרויס.
הוספתי אטטריביוט [ScriptMethod(UseHttpGet = true)] למתודות שמקבלות את הURL עם הקוורי סטרינג.
הבעיה שבמעבר מpost לget (קרי שימוש ב[r]=redirect ולא p=proxy) נעלמת השורה שמסבירה שהלקוח מצפה לאובייקט JSON (בפידלר השורה Content-Type: application/json; charset=UTF-8 הופכת לטיפוס xml).
אבל גם כשאני בונה בקשת לקוח בפידלר (לצורך בדיקה) עם השורה הנ"ל Content-Type: application/json; charset=UTF-8 - חוזר לי אובייקט JSON אבל עם שגיאה בתוכו
או פשוט שגיאה שלא הצליח להמיר XML לJSON.
לצורך בדיקה הפעלתי את המתודה הבעייתי דרך מתודה אחרת - אין לה אטטריביוט ScriptMethod(UseHttpGet = true)]
והיא מצפה לpost (העברתי אליה בproxy) והפרמטר הנוסף היה האר-קודד. אז הJSON חוזר (דרך שרשרת הקריאות) בסדר גמור.
אגב- בווב-קונפיג מוגדרים הפרוטוקולים get וpost שניהם.
למישהו יש רעיון איך לפתור את זה. או שאין מנוס מלשיג את הקוד לקוח ולשנות דרכו?
תודה מראש ומצטער על החפירה העמוקה.



ציטוט ההודעה