מדיניות CORS

מדיניות רגילה

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

שיתוף משאבים בין מקורות (CORS) הוא מנגנון סטנדרטי שמאפשר לקריאות JavaScript XMLHttpRequest ‏ (XHR) שמופעלות בדף אינטרנט ליצור אינטראקציה עם משאבים מדומיינים שאינם המקור. CORS הוא פתרון נפוץ למדיניות המקור הזהה שנאכפת על ידי כל הדפדפנים.

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

מקרה שימוש אחד ב-CORS הוא התכונה Try this API בפורטל למפתחים SmartDoc. מידע נוסף זמין במאמר בנושא הגדרת proxy ל-API לתמיכה בחלונית Try this API.

מדיניות ה-CORS מאפשרת ללקוחות Apigee להגדיר מדיניות CORS לממשקי API שנצרכים על ידי אפליקציות אינטרנט.

המדיניות הזו היא מדיניות רגילה ואפשר לפרוס אותה בכל סוג של סביבה. מידע על סוגי המדיניות והזמינות שלהם בכל סוג סביבה זמין במאמר סוגי מדיניות.

רכיב <CORS>

הגדרת מדיניות CORS.

ערך ברירת המחדל מידע נוסף מופיע בכרטיסייה מדיניות ברירת המחדל שבהמשך
חובה? חובה
סוג אובייקט מורכב
רכיב אב לא רלוונטי
רכיבי צאצא <AllowCredentials>
<AllowHeaders>
<AllowMethods>
<AllowOrigins>
<DisplayName>
<ExposeHeaders>
<GeneratePreflightResponse>
<IgnoreUnresolvedVariables>
<MaxAge>

רכיב <CORS> משתמש בתחביר הבא:

תחביר

רכיב <CORS> משתמש בתחביר הבא:


<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <DisplayName>DISPLAY_NAME</DisplayName>
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <AllowMethods>[GET, PUT, POST, DELETE, ...|*]</AllowMethods>
  <AllowHeaders>[origin, x-requested-with, accept, content-type, ...]</AllowHeaders>
  <ExposeHeaders>[X-CUSTOM-HEADER-A, X-CUSTOM-HEADER-B, ... | *]</ExposeHeaders>
  <MaxAge>[integer|-1]</MaxAge>
  <AllowCredentials>[false|true]</AllowCredentials>
  <GeneratePreflightResponse>[false|true]</GeneratePreflightResponse>
  <IgnoreUnresolvedVariables>[false|true]</IgnoreUnresolvedVariables>
</CORS>

מדיניות ברירת המחדל

בדוגמה הבאה מוצגות הגדרות ברירת המחדל כשמוסיפים את מדיניות ה-CORS לתהליך בעזרת ממשק המשתמש של Edge:

<CORS continueOnError="false" enabled="true" name="add-cors">
    <DisplayName>Add CORS</DisplayName>
    <AllowOrigins>{request.header.origin}</AllowOrigins>
    <AllowMethods>GET, PUT, POST, DELETE</AllowMethods>
    <AllowHeaders>origin, x-requested-with, accept, content-type</AllowHeaders>
    <ExposeHeaders>*</ExposeHeaders>
    <MaxAge>3628800</MaxAge>
    <AllowCredentials>false</AllowCredentials>
    <GeneratePreflightResponse>true</GeneratePreflightResponse>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</CORS>

כשמוסיפים מדיניות חדשה של CORS בממשק המשתמש של Apigee, התבנית מכילה stub לכל הפעולות האפשריות. בדרך כלל, בוחרים אילו פעולות רוצים לבצע באמצעות המדיניות הזו ומסירים את שאר רכיבי הצאצא. לדוגמה, אם רוצים לציין את שיטות ה-HTTP שמותרות לגישה למשאב, משתמשים ברכיב <AllowMethods> ומסירים את שאר הרכיבים המשניים מהמדיניות כדי שהיא תהיה קריאה יותר.

לרכיב הזה יש את המאפיינים הבאים שמשותפים לכל המדיניות:

מאפיין ברירת מחדל חובה? תיאור
name לא רלוונטי חובה

השם הפנימי של המדיניות. הערך של מאפיין name יכול להכיל אותיות, מספרים, רווחים, מקפים, קווים תחתונים ונקודות. הערך הזה לא יכול לחרוג מ-255 תווים.

אפשר להשתמש ברכיב <DisplayName> כדי לתת למדיניות תווית בשם אחר בשפה טבעית בכלי לעריכת פרוקסי בממשק הניהול.

continueOnError FALSE אופציונלי מגדירים את הערך false כדי להחזיר שגיאה אם המדיניות נכשלת. זו התנהגות צפויה ברוב המקרים. הגדרה ל-true מאפשרת להמשיך את הביצוע של התהליך גם אחרי שמדיניות נכשלת. מאמרים קשורים:
enabled TRUE אופציונלי מגדירים את המדיניות למצב true כדי לאכוף אותה. מגדירים את הערך false כדי להשבית את המדיניות. המדיניות לא תיאכף גם אם היא תישאר מצורפת לזרימה.
async   FALSE הוצא משימוש המאפיין הזה הוצא משימוש.

בקטעים הבאים מפורט כל אחד מרכיבי הצאצא.

דוגמאות

בקטעים הבאים מופיעות דוגמאות לכל רכיבי הצאצא.

הפניה לרכיב צאצא

בקטע הזה מתוארים רכיבי הבן של <CORS>.

<AllowCredentials>

מציין אם למבצע הקריאה מותר לשלוח את הבקשה בפועל (לא את בקשת ה-preflight) באמצעות פרטי כניסה. התרגום מופיע בכותרת Access-Control-Allow-Credentials.

ערך ברירת המחדל אם לא מציינים ערך, Access-Control-Allow-Credentials לא יוגדר.
חובה? אופציונלי
סוג בוליאני
רכיב אב <CORS>
רכיבי צאצא ללא

רכיב <AllowCredentials> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <AllowCredentials>[false|true]</AllowCredentials>
</CORS>
      

דוגמה

בדוגמה הזו, הכותרת Access-Control-Allow-Credentials מוגדרת ל-false. כלומר, למבצע הקריאה אין הרשאה לשלוח את הבקשה בפועל (לא את בקשת ה-preflight) באמצעות פרטי הכניסה.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <AllowCredentials>false</AllowCredentials>
</CORS>

<AllowHeaders>

רשימה של כותרות HTTP שאפשר להשתמש בהן כשמבקשים את המשאב. Serialized to the Access-Control-Allow-Headers header.

ערך ברירת המחדל Origin, Accept, X-Requested-With, Content-Type, Access-Control-Request-Method, Access-Control-Request-Headers
חובה? אופציונלי
סוג מחרוזת, עם תמיכה בתבנית הודעה*
רכיב אב <CORS>
רכיבי צאצא ללא

* מידע נוסף זמין במאמר מהי תבנית הודעה?

רכיב <AllowHeaders> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <AllowHeaders>[origin, x-requested-with, accept, content-type, ...]</AllowHeaders>
</CORS>

דוגמה

דוגמה ל-CORS AllowOrigins

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

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <AllowHeaders>origin, x-requested-with, accept, content-type</AllowHeaders>
</CORS>

<AllowMethods>

רשימה של methods של HTTP שמותר לגשת אליהן למשאב. התוכן יעבור סריאליזציה לכותרת Access-Control-Allow-Methods.

ערך ברירת המחדל GET, POST, HEAD, OPTIONS
חובה? אופציונלי
סוג מחרוזת, עם תמיכה בתבנית הודעה*
רכיב אב <CORS>
רכיבי צאצא ללא

* מידע נוסף זמין במאמר מהי תבנית הודעה?

רכיב <AllowMethods> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <AllowMethods>[GET, PUT, POST, DELETE, ...|*]</AllowMethods>
</CORS>

דוגמה:
List

This example specifies the HTTP methods that are allowed to access the resource.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <AllowMethods>GET, PUT, POST, DELETE</AllowMethods>
</CORS>

דוגמה:
תו כללי

בדוגמה הזו מצוין שכל ה-methods של HTTP יכולים לגשת למשאב.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <AllowMethods>*</AllowMethods>
</CORS>

<AllowOrigins>

רשימת מקורות שמורשים לגשת למשאב. משתמשים בכוכבית (*) כדי לאפשר גישה למשאב מכל מקור. אחרת, צריך לספק רשימת מקורות מותרים מופרדת בפסיקים. אם נמצאת התאמה, Access-Control-Allow-Origin היוצא מוגדר למקור כפי שסופק על ידי הלקוח.

ערך ברירת המחדל לא רלוונטי
חובה? חובה
סוג מחרוזת, עם תמיכה בתבנית הודעה*
רכיב אב <CORS>
רכיבי צאצא ללא

* מידע נוסף זמין במאמר מהי תבנית הודעה?

רכיב <AllowOrigins> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
</CORS>

דוגמה:
כתובת URL יחידה

בדוגמה הזו מצוין מקור URL יחיד שמותר לו לגשת למשאב.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>https://www.w3.org</AllowOrigins>
</CORS>

דוגמה:
כתובות URL מרובות

בדוגמה הזו מצוינים כמה מקורות שמורשים לגשת למשאב.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>https://www.w3.org, https://www.apache.org</AllowOrigins>
</CORS>

דוגמה:
משתנה הקשר

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

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{origins.list}</AllowOrigins>
</CORS>

דוגמה:
משתנה של זרימת נתונים

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

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
</CORS>

דוגמה:
תו כללי

בדוגמה הזו צוין שכל המקורות יכולים לגשת למשאב.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>*</AllowOrigins>
</CORS>

<DisplayName>

אפשר להשתמש במאפיין הזה בנוסף למאפיין name כדי לתת למדיניות שם אחר, שנשמע יותר טבעי, ב-UI של ניהול עריכת ה-proxy.

הרכיב <DisplayName> משותף לכל סוגי המדיניות.

ערך ברירת המחדל לא רלוונטי
חובה? זה שינוי אופציונלי. אם לא מציינים את <DisplayName>, המערכת משתמשת בערך של מאפיין name של המדיניות.
סוג String
רכיב אב <PolicyElement>
רכיבי צאצא ללא

רכיב <DisplayName> משתמש בתחביר הבא:

תחביר

<PolicyElement>
  <DisplayName>POLICY_DISPLAY_NAME</DisplayName>
  ...
</PolicyElement>

דוגמה

<PolicyElement>
  <DisplayName>My Validation Policy</DisplayName>
</PolicyElement>

לרכיב <DisplayName> אין מאפיינים או רכיבי צאצא.

<ExposeHeaders>

רשימה של כותרות HTTP שהדפדפנים יכולים לגשת אליהן, או כוכבית (*) כדי לאפשר גישה לכל כותרות ה-HTTP. Serialized into the Access-Control-Expose-Headers header.

ערך ברירת המחדל אם לא מציינים ערך, Access-Control-Expose-Headers לא יוגדר. כותרות לא פשוטות לא נחשפות כברירת מחדל.
חובה? אופציונלי
סוג מחרוזת, עם תמיכה בתבנית הודעה*
רכיב אב <CORS>
רכיבי צאצא ללא

* מידע נוסף זמין במאמר מהי תבנית הודעה?

רכיב <ExposeHeaders> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <ExposeHeaders>[X-CUSTOM-HEADER-A, X-CUSTOM-HEADER-B, ... | *]</ExposeHeaders>
</CORS>

דוגמה

בדוגמה הזו מצוין שהדפדפנים יכולים לגשת לכל כותרות ה-HTTP.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <ExposeHeaders>*</ExposeHeaders>
</CORS>

<GeneratePreflightResponse>

מציינים אם המדיניות צריכה ליצור ולהחזיר את התגובה לבקשת קדם-ההפעלה במסגרת CORS. אם false, לא נשלחת תגובה. במקום זאת, משתני הזרימה הבאים מאוכלסים:

  • cross_origin_resource_sharing.allow.credentials
  • cross_origin_resource_sharing.allow.headers
  • cross_origin_resource_sharing.allow.methods
  • cross_origin_resource_sharing.allow.origin
  • cross_origin_resource_sharing.allow.origins.list
  • cross_origin_resource_sharing.expose.headers
  • cross_origin_resource_sharing.max.age
  • cross_origin_resource_sharing.preflight.accepted
  • cross_origin_resource_sharing.request.headers
  • cross_origin_resource_sharing.request.method
  • cross_origin_resource_sharing.request.origin
  • cross_origin_resource_sharing.request.type
ערך ברירת המחדל true
חובה? אופציונלי
סוג בוליאני
רכיב אב <CORS>
רכיבי צאצא ללא

רכיב <GeneratePreflightResponse> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <GeneratePreflightResponse>[false|true]</GeneratePreflightResponse>
  <GeneratePreflightResponse>[false|true]</GeneratePreflightResponse>
</CORS>

דוגמה

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

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <GeneratePreflightResponse>true</GeneratePreflightResponse>
</CORS>

<IgnoreUnresolvedVariables>

קובעת אם העיבוד ייפסק כשנתקלים במשתנה לא פתור. הערך true גורם להתעלמות ממשתנים שלא נפתרו ולהמשך העיבוד; אחרת false.

ערך ברירת המחדל true
חובה? אופציונלי
סוג בוליאני
רכיב אב <CORS>
רכיבי צאצא ללא

רכיב <IgnoreUnresolvedVariables> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <IgnoreUnresolvedVariables>[false|true]</IgnoreUnresolvedVariables>
</CORS>

דוגמה

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

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
</CORS>

<MaxAge>

מציינת למשך כמה זמן (בשניות) אפשר לשמור במטמון את התוצאות של בקשת קדם-הפעלה. הערך -1 מאכלס את הכותרת Access-Control-Max-Age עם הערך -1, שמשבית את השמירה במטמון. לכן, נדרשת בדיקת OPTIONS לפני כל הקריאות. ההגדרה מופיעה ב Access-Control-Max-Ageמפרט.

ערך ברירת המחדל 1800
חובה? אופציונלי
סוג מספר שלם
רכיב אב <CORS>
רכיבי צאצא ללא

רכיב <MaxAge> משתמש בתחביר הבא:

תחביר

<CORS continueOnError="[false|true]" enabled="[false|true]" name="POLICY_NAME">
  <AllowOrigins>[{message template}|URL|URL, URL, ...|{context-variable}|{flow-variable}|*]</AllowOrigins>
  <MaxAge>[integer|-1]</MaxAge>
</CORS>

דוגמה:
Cache

בדוגמה הזו מצוין שאפשר לשמור במטמון את התוצאות של בקשת קדם-הפעלה למשך 3628800 שניות.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <MaxAge>3628800</MaxAge>
</CORS>

דוגמה:
No cache

בדוגמה הזו מצוין שאי אפשר לשמור במטמון את התוצאות של בקשת קדם הפעלה.

<CORS continueOnError="false" enabled="true" name="add-cors">
  <AllowOrigins>{request.header.origin}</AllowOrigins>
  <MaxAge>-1</MaxAge>
</CORS>

הערות שימוש

OPTIONS בקשות

כשמתקבלת בקשה מסוג OPTIONS והיא מעובדת על ידי מדיניות ה-CORS, הביצוע של זרימת הנתונים של ה-proxy מועבר ישירות אל Proxy Response PreFlow, תוך דילוג על זרימות הבקשות, והביצוע נמשך משם. אין צורך ליצור תנאי כדי להתעלם מבקשת OPTIONS בתהליך של בקשת ה-proxy.

בשיחות הבאות, כשהמדיניות של CORS מופעלת, אם תוקף ה-MaxAge שהוגדר במדיניות לא פג, התהליך ממשיך כרגיל. במהלך תהליך התגובה הסופי, ממש לפני 'התגובה נשלחה ללקוח', שלב מיוחד של ביצוע CORS‏, CORSResponseOrErrorFlowExecution, מגדיר כותרות תגובה של CORS‏ (Access-Control-Allow-Credentials,‏ Access-Control-Allow-Origin ו-Access-Control-Expose-Headers) כדי להחזיר תגובה שעברה אימות של CORS.

קודי שגיאה

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

שגיאות זמן ריצה

השגיאות האלה יכולות להתרחש כשהמדיניות מופעלת.

קוד תקלה סטטוס HTTP מטרה
steps.cors.UnresolvedVariable 500 השגיאה הזו מתרחשת אם משתנה שצוין במדיניות ה-CORS הוא:
  • לא רלוונטי (לא זמין בתהליך הספציפי שבו המדיניות מופעלת)
  • או

  • אי אפשר לפתור (לא מוגדר)

שגיאות פריסה

השגיאות האלה יכולות להתרחש כשפורסים שרת proxy שמכיל את המדיניות הזו.

שם השגיאה מטרה
InvalidMaxAge MaxAge הוא לא מספר
MissingAllowOrigins לא צוין AllowOrigins
InvalidHTTPMethods אחת מהשיטות ב-AllowMethods לא תקינה
AllowHeadersSizeTooLarge הגודל של המחרוזת ב-AllowHeaders גדול מדי.
ExposeHeadersSizeTooLarge הגודל של המחרוזת ב-ExposeHeaders גדול מדי.

משתני תקלות

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

משתנים כאשר: דוגמה
fault.name = "FAULT_NAME" FAULT_NAME הוא שם התקלה, כפי שמופיע בטבלה Runtime errors שלמעלה. שם התקלה הוא החלק האחרון של קוד התקלה. fault.name Matches "UnresolveVariable"
cors.POLICY_NAME.failed POLICY_NAME הוא השם שהמשתמש נתן למדיניות שגרמה לשגיאה. cors.AddCORS.failed = true

דוגמה לתגובת שגיאה

{
   "fault":{
      "detail":{
         "errorcode":"steps.cors.UnresolvedVariable"
      },
      "faultstring":"CORS[AddCORS]: unable to resolve variable wrong.var"
   }
}

דוגמה לכלל שגיאה

<FaultRule name="Add CORS Fault">
    <Step>
        <Name>Add-CORSCustomUnresolvedVariableErrorResponse</Name>
        <Condition>(fault.name Matches "UnresolvedVariable") </Condition>
    </Step>
    <Condition>(cors.Add-CORS.failed = true) </Condition>
</FaultRule>

משתני Flow

אובייקט CorsFlowInfo FlowInfo יתווסף ויהיה זמין למעקב.

מאפיין (property) סוג קריאה/כתיבה תיאור תחילת ההיקף
cross_origin_resource_sharing.allow.credentials בוליאני קריאה/כתיבה ערך מ-<AllowCredentials> בקשה משרת proxy
cross_origin_resource_sharing.allow.headers String קריאה/כתיבה ערך מ-<AllowHeaders> בקשה משרת proxy
cross_origin_resource_sharing.allow.methods String קריאה/כתיבה ערך מ-<AllowMethods> בקשה משרת proxy
cross_origin_resource_sharing.allow.origin String קריאה/כתיבה מקור הבקשה שמותר, ריק אם הוא לא ברשימת ההיתרים בקשה משרת proxy
cross_origin_resource_sharing.allow.origins.list String קריאה/כתיבה ערך מ-<AllowOrigins> בקשה משרת proxy
cross_origin_resource_sharing.expose.headers String קריאה/כתיבה ערך מ-<ExposeHeaders> בקשה משרת proxy
cross_origin_resource_sharing.max.age מספר שלם קריאה/כתיבה ערך מ-<MaxAge> בקשה משרת proxy
cross_origin_resource_sharing.preflight.accepted בוליאני קריאה/כתיבה מציין אם בקשת קדם-הפעלה מתקבלת בקשה משרת proxy
cross_origin_resource_sharing.request.headers String קריאה/כתיבה הערך של כותרת הבקשה Access-Control-Request-Headers בקשה משרת proxy
cross_origin_resource_sharing.request.method String קריאה/כתיבה הערך של כותרת הבקשה Access-Control-Request-Method בקשה משרת proxy
cross_origin_resource_sharing.request.origin String קריאה/כתיבה בדיוק כמו request.header.origin בקשה משרת proxy
cross_origin_resource_sharing.request.type String קריאה/כתיבה

סוג בקשת ה-CORS. ערכים אפשריים:

  • בפועל: בקשה שלא מוגדרת כבקשת preflight
  • PRE_FLIGHT: בקשת קדם-הפעלה
בקשה משרת proxy