בעיה ב CORS
-
בעיה מוזרה מאוד ב CORS.
אני מאפשר בצד שרת כך:res.header('Access-Control-Allow-Origin', '*'); res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTION'); res.header('Access-Control-Allow-Headers', '*');
וזה עבד כצפוי.
אך כשהוספתי לבקשה איזשהו header (לא משנה מה. אני ניסיתי authorization),
הדפדפן לא שולח בכלל את הבקשה. רק שולח בהתחלה OPTION.
בקיצור, השאלה היא, מדוע כשמוסיפים הדר (מכל סוג) לבקשה ה CORS מתחרפן. כשהורדתי את ההדר, זה עובד היטב. -
@מנצפך היה עוזר אם היית מצרף את הבקשה והתשובה של הOPTION המקדים. הוא הרי עשוי בדיוק בשביל לבדוק האם הבקשה מותרת, וכנראה הוא נענה שהיא אסורה.
אם אנסה לענות על עיוור, אני רואה בתיעוד של Access-Control-Allow-Headers שכתוב ש:The value "*" only counts as a special wildcard value for requests without credentials (requests without HTTP cookies or HTTP authentication information). In requests with credentials, it is treated as the literal header name "*" without special semantics. Note that the Authorization header can't be wildcarded and always needs to be listed explicitly.
כלומר אם הבקשה שלך כוללת עוגיות, אז כוכבית לא עוזרת ויש לפרט את כל הכותרות הנדרשות (למעט הבטוחות שזה type accept ועוד כמה). אם העוגיות מיותרות אתה יכול לא לשלוח אותם, בדוק על הספריה שמבצעת עבורך את הבקשות (בfetchהם לא נשלחות בברירת מחדל).