คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
อะไร
นโยบายนี้ช่วยให้คุณเพิ่มโค้ด JavaScript ที่กำหนดเองซึ่งจะดำเนินการภายในบริบทของโฟลว์พร็อกซี API ในโค้ด JavaScript ที่กำหนดเอง คุณสามารถใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของรูปแบบออบเจ็กต์ JavaScript ของ Apigee Edge โมเดลออบเจ็กต์ช่วยให้คุณรับ ตั้งค่า และนำตัวแปร ในบริบทของโฟลว์พร็อกซีออกได้ นอกจากนี้ คุณยังใช้ฟังก์ชันการเข้ารหัสพื้นฐานที่มาพร้อมกับโมเดลออบเจ็กต์ได้ด้วย
เกี่ยวกับ
นโยบาย JavaScript มี Use Case มากมาย เช่น คุณสามารถรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กำหนดเองและจัดการข้อผิดพลาด ดึงข้อมูลจากคำขอหรือ การตอบกลับ แก้ไข URL เป้าหมายของแบ็กเอนด์แบบไดนามิก และอื่นๆ อีกมากมาย นโยบายนี้ช่วยให้คุณ ใช้ลักษณะการทำงานที่กำหนดเองซึ่งนโยบาย Edge มาตรฐานอื่นๆ ไม่ครอบคลุม ในความเป็นจริง คุณ สามารถใช้นโยบาย JavaScript เพื่อให้ได้ลักษณะการทำงานหลายอย่างเช่นเดียวกับที่นโยบายอื่นๆ เช่น AssignMessage และ ExtractVariable นำมาใช้
กรณีการใช้งานหนึ่งที่เราไม่แนะนำให้ใช้กับนโยบาย JavaScript คือการบันทึก นโยบายการบันทึกข้อความเหมาะสําหรับการบันทึกลงในแพลตฟอร์มการบันทึกของบุคคลที่สาม เช่น Splunk, Sumo และ Loggly มากกว่า และคุณจะปรับปรุงประสิทธิภาพของพร็อกซี API ได้ด้วยการใช้นโยบายการบันทึกข้อความใน PostClientFlow ซึ่งจะทํางานหลังจากที่ส่งการตอบกลับกลับไปยังไคลเอ็นต์แล้ว
นโยบาย JavaScript ช่วยให้คุณระบุไฟล์ต้นฉบับ JavaScript ที่จะเรียกใช้ หรือ
คุณจะรวมโค้ด JavaScript ไว้ในการกำหนดค่าของนโยบายโดยตรงด้วยองค์ประกอบ <Source>
ก็ได้
ไม่ว่าจะด้วยวิธีใด โค้ด JavaScript จะทำงานเมื่อขั้นตอนที่แนบนโยบายไว้ทำงาน
สำหรับตัวเลือกไฟล์ต้นฉบับ ระบบจะจัดเก็บซอร์สโค้ดไว้ในตำแหน่งมาตรฐานภายในแพ็กเกจพร็อกซีเสมอ ซึ่งก็คือ apiproxy/resources/jsc หรือจะจัดเก็บซอร์สโค้ดไว้ในไฟล์ทรัพยากรที่ระดับสภาพแวดล้อมหรือองค์กรก็ได้ ดูวิธีการได้ที่ไฟล์ทรัพยากร นอกจากนี้ คุณยังอัปโหลด JavaScript ผ่านเครื่องมือแก้ไขพร็อกซีของ Apigee UI ได้ด้วย
ไฟล์แหล่งที่มาของ JavaScript ต้องมีส่วนขยาย .js เสมอ
ดูเวอร์ชัน JavaScript ที่รองรับในปัจจุบันได้ที่ซอฟต์แวร์และเวอร์ชันที่รองรับ
วิดีโอ
ดูวิดีโอสั้นๆ เพื่อดูวิธีสร้างส่วนขยายนโยบายที่กำหนดเองโดยใช้นโยบาย JavaScript
ตัวอย่าง
เขียน URL เป้าหมายใหม่
กรณีการใช้งานที่พบบ่อยคือการดึงข้อมูลจากเนื้อหาคำขอ จัดเก็บไว้ในตัวแปรโฟลว์ และใช้ตัวแปรโฟลว์นั้นในที่อื่นๆ ในโฟลว์พร็อกซี สมมติว่าคุณมีแอป ที่ผู้ใช้ป้อนชื่อในแบบฟอร์ม HTML แล้วส่ง คุณต้องการให้พร็อกซี API ดึงข้อมูลแบบฟอร์มและเพิ่มลงใน URL ที่ใช้เรียกใช้บริการแบ็กเอนด์แบบไดนามิก คุณจะทำเช่นนี้ในนโยบาย JavaScript ได้อย่างไร
หมายเหตุ: หากต้องการลองใช้ตัวอย่างนี้ เราจะถือว่าคุณได้สร้างพร็อกซีใหม่ในเครื่องมือแก้ไขพร็อกซีแล้ว เมื่อสร้างแล้ว ให้ระบุ URL ของบริการแบ็กเอนด์เป็น http://www.example.com สำหรับตัวอย่างนี้ เราจะเขียน URL ของแบ็กเอนด์ใหม่แบบไดนามิก หากไม่ทราบวิธีสร้างพร็อกซีใหม่ โปรดดูบทแนะนำการเริ่มต้นใช้งาน .
- ใน UI ของ Edge ให้เปิดพร็อกซีที่คุณสร้างในเครื่องมือแก้ไขพร็อกซี
- เลือกแท็บพัฒนา
- เลือกสคริปต์ใหม่จากเมนูใหม่
- ในกล่องโต้ตอบ ให้เลือก JavaScript และตั้งชื่อสคริปต์ เช่น
js-example - วางโค้ดต่อไปนี้ในตัวแก้ไขโค้ดแล้วบันทึกพร็อกซี สิ่งสำคัญที่ควรสังเกตคือ
contextออบเจ็กต์ ออบเจ็กต์นี้พร้อมใช้งานกับโค้ด JavaScript ทุกที่ในโฟลว์ของพร็อกซี ใช้เพื่อรับค่าคงที่เฉพาะโฟลว์ เรียกใช้เมธอด get/set ที่มีประโยชน์ และสำหรับการดำเนินการอื่นๆ ส่วนออบเจ็กต์นี้เป็นของรูปแบบออบเจ็กต์ JavaScript ของ Edge โปรดทราบ ว่าตัวแปรโฟลว์target.urlเป็นตัวแปรบิวท์อินแบบอ่าน/เขียนที่ เข้าถึงได้ในโฟลว์คำขอเป้าหมาย เมื่อเราตั้งค่าตัวแปรนั้นด้วย URL ของ API แล้ว Edge จะทำการเรียกแบ็กเอนด์ไปยัง URL นั้น เราได้เขียน URL เป้าหมายเดิมใหม่ ซึ่งเป็น URL ที่คุณระบุเมื่อสร้างพร็อกซี (เช่น http://www.example.com)
if (context.flow=="PROXY_REQ_FLOW") { var username = context.getVariable("request.formparam.user"); context.setVariable("info.username", username); } if (context.flow=="TARGET_REQ_FLOW") { context.setVariable("request.verb", "GET"); var name = context.getVariable("info.username"); var url = "http://mocktarget.apigee.net/" context.setVariable("target.url", url + "?user=" + name); }
- เลือก JavaScript จากเมนู "นโยบายใหม่"
- ตั้งชื่อนโยบาย เช่น
target-rewriteยอมรับค่าเริ่มต้นและบันทึก นโยบาย - หากเลือก Preflow ของพร็อกซีปลายทางในแถบนำทาง คุณจะเห็นว่ามีการเพิ่มนโยบาย ลงในโฟลว์นั้น
- ในแถบนำทาง ให้เลือกไอคอน Target Endpoint PreFlow
- จากแถบนำทาง ให้ลากนโยบาย JavaScript ไปยังด้านคำขอของปลายทางเป้าหมายในเครื่องมือแก้ไขโฟลว์
- บันทึก
- เรียก API ดังนี้ โดยแทนที่ชื่อองค์กรและชื่อพร็อกซีที่ถูกต้องตามความเหมาะสม:
curl -i -H 'Content-Type: application/x-www-form-urlencoded' -X POST -d 'user=Will' http://myorg-test.apigee.net/js-example
สุดท้ายนี้ เรามาดูคำจำกัดความ XML สำหรับนโยบาย JavaScript ที่ใช้ใน
ตัวอย่างนี้กัน สิ่งสำคัญที่ควรทราบคือระบบจะใช้องค์ประกอบ <ResourceURL>
เพื่อระบุไฟล์ต้นฉบับ JavaScript ที่จะดำเนินการ รูปแบบเดียวกันนี้ใช้
สำหรับไฟล์แหล่งที่มา JavaScript ใดๆ: jsc://filename.js หากโค้ด JavaScript ของคุณ
ต้องมีการรวม คุณสามารถใช้องค์ประกอบ <IncludeURL> อย่างน้อย 1 รายการเพื่อทำ
เช่นนั้นได้ตามที่อธิบายไว้ในข้อมูลอ้างอิงนี้ในภายหลัง
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="target-rewrite"> <DisplayName>target-rewrite</DisplayName> <Properties/> <ResourceURL>jsc://js-example.js</ResourceURL> </Javascript>
ดึงค่าพร็อพเพอร์ตี้จาก JavaScript
คุณเพิ่มองค์ประกอบ <Property> ในการกำหนดค่าได้ จากนั้นเรียกค่าขององค์ประกอบ
ด้วย JavaScript ในช่วงรันไทม์
ใช้แอตทริบิวต์ name ขององค์ประกอบเพื่อระบุชื่อที่จะใช้เข้าถึงพร็อพเพอร์ตี้
จากโค้ด JavaScript ค่าขององค์ประกอบ <Property> (ค่าระหว่างแท็กเปิดและปิด) คือค่าตามตัวอักษรที่ JavaScript จะได้รับ
ใน JavaScript คุณจะดึงค่าพร็อพเพอร์ตี้ของนโยบายได้โดยการเข้าถึงเป็นพร็อพเพอร์ตี้ของออบเจ็กต์ Properties ดังตัวอย่างต่อไปนี้
- กำหนดค่าพร็อพเพอร์ตี้ ในที่นี้ ค่าพร็อพเพอร์ตี้คือชื่อตัวแปร
response.status.code<Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavascriptURLRewrite"> <DisplayName>JavascriptURLRewrite</DisplayName> <Properties> <Property name="source">response.status.code</Property> </Properties> <ResourceURL>jsc://JavascriptURLRewrite.js</ResourceURL> </Javascript>
- เรียกข้อมูลพร็อพเพอร์ตี้ด้วย JavaScript ในที่นี้ ระบบจะใช้ค่าที่ดึงมา ซึ่งก็คือชื่อตัวแปร
โดยฟังก์ชัน
getVariableเพื่อดึงค่าของตัวแปรvar responseCode = properties.source; // Returns "response.status.code" var value = context.getVariable(responseCode); // Get the value of response.status.code context.setVariable("response.header.x-target-response-code", value);
การจัดการข้อผิดพลาด
ดูตัวอย่างและการสนทนาเกี่ยวกับเทคนิคการจัดการข้อผิดพลาดที่คุณใช้ในการเรียกใช้ JavaScript ได้ที่ โพสต์นี้ในชุมชน Apigee คำแนะนำที่เสนอในชุมชน Apigee มีไว้เพื่อ ให้ข้อมูลเท่านั้น และไม่จำเป็นต้องเป็นแนวทางปฏิบัติแนะนำที่ Apigee แนะนำ
การอ้างอิงองค์ประกอบ
การอ้างอิงองค์ประกอบจะอธิบายองค์ประกอบและแอตทริบิวต์ของนโยบาย JavaScript
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <Javascript async="false" continueOnError="false" enabled="true" timeLimit="200" name="JavaScript-1"> <DisplayName>JavaScript 1</DisplayName> <Properties> <Property name="propName">propertyValue</Property> </Properties> <SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo> <IncludeURL>jsc://a-javascript-library-file</IncludeURL> <ResourceURL>jsc://my-javascript-source-file</ResourceURL> <Source>insert_js_code_here</Source> </Javascript>
แอตทริบิวต์ <Javascript>
<Javascript name="Javascript-1" enabled="true" continueOnError="false" async="false" timeLimit="200">
แอตทริบิวต์ต่อไปนี้เป็นแอตทริบิวต์เฉพาะสำหรับนโยบายนี้
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|
| timeLimit |
ระบุเวลาสูงสุด (เป็นมิลลิวินาที) ที่สคริปต์ได้รับอนุญาตให้
ดำเนินการ เช่น หากเกินขีดจำกัด 200 มิลลิวินาที นโยบายจะแสดงข้อผิดพลาดนี้
หมายเหตุ: สำหรับบัญชีทดลองใช้ฟรี ระบบจะจำกัดเวลาในการดำเนินการไว้ที่ 200 มิลลิวินาที |
ไม่มี | ต้องระบุ |
ตารางต่อไปนี้อธิบายแอตทริบิวต์ทั่วไปในองค์ประกอบระดับบนสุดของนโยบายทั้งหมด
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|
name |
ชื่อภายในของนโยบาย ค่าของแอตทริบิวต์ (ไม่บังคับ) ใช้องค์ประกอบ |
ไม่มี | ต้องระบุ |
continueOnError |
ตั้งค่าเป็น ตั้งค่าเป็น |
เท็จ | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
เท็จ | เลิกใช้ |
<DisplayName> องค์ประกอบ
ใช้เพิ่มเติมจากแอตทริบิวต์ name เพื่อติดป้ายกำกับนโยบายใน
เครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติต่างกัน
<DisplayName>Policy Display Name</DisplayName>
| ค่าเริ่มต้น |
ไม่มี หากไม่ใส่องค์ประกอบนี้ ค่าของแอตทริบิวต์ |
|---|---|
| การมีบุคคลอยู่ | ไม่บังคับ |
| ประเภท | สตริง |
องค์ประกอบ <IncludeURL>
ระบุไฟล์ไลบรารี JavaScript ที่จะโหลดเป็นทรัพยากร Dependency ไปยังไฟล์ JavaScript หลัก
ที่ระบุด้วยองค์ประกอบ <ResourceURL> หรือ <Source> ระบบจะประเมินสคริปต์ตามลำดับที่ระบุไว้ในนโยบาย โค้ดของคุณสามารถใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript
รวมทรัพยากรการอ้างอิง JavaScript มากกว่า 1 รายการที่มีองค์ประกอบ <IncludeURL> เพิ่มเติม
<IncludeURL>jsc://my-javascript-dependency.js</IncludeURL>
| ค่าเริ่มต้น: | ไม่มี |
| การแสดงตน: | ไม่บังคับ |
| ประเภท: | สตริง |
ตัวอย่าง
ดูตัวอย่างพื้นฐานได้ในส่วนตัวอย่าง
องค์ประกอบ <Property>
ระบุพร็อพเพอร์ตี้ที่คุณเข้าถึงได้จากโค้ด JavaScript ในขณะรันไทม์
<Properties> <Property name="propName">propertyValue</Property> </Properties>
| ค่าเริ่มต้น: | ไม่มี |
| การแสดงตน: | ไม่บังคับ |
| ประเภท: | สตริง |
Attributes
| แอตทริบิวต์ | คำอธิบาย | ค่าเริ่มต้น | การมีบุคคลอยู่ |
|---|---|---|---|
| ชื่อ |
ระบุชื่อพร็อพเพอร์ตี้ |
ไม่มี | ต้องระบุ |
ตัวอย่าง
ดูตัวอย่างได้ในส่วนตัวอย่าง
องค์ประกอบ <ResourceURL>
ระบุไฟล์ JavaScript หลักที่จะดำเนินการในโฟลว์ API คุณสามารถจัดเก็บไฟล์นี้
ที่ขอบเขตพร็อกซี API (ใน /apiproxy/resources/jsc ในแพ็กเกจพร็อกซี API หรือใน
ส่วนสคริปต์ของแผง Navigator ของเครื่องมือแก้ไขพร็อกซี API) หรือที่ขอบเขตขององค์กรหรือ
สภาพแวดล้อมเพื่อนำไปใช้ซ้ำในพร็อกซี API หลายรายการ ตามที่อธิบายไว้ในไฟล์ทรัพยากร โค้ดของคุณสามารถใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript
<ResourceURL>jsc://my-javascript.js</ResourceURL>
| ค่าเริ่มต้น: | ไม่มี |
| การแสดงตน: | ต้องระบุ <ResourceURL> หรือ <Source> หากมีทั้ง <ResourceURL> และ <Source> ระบบจะไม่สนใจ <ResourceURL> |
| ประเภท: | สตริง |
ตัวอย่าง
ดูตัวอย่างพื้นฐานได้ในส่วนตัวอย่าง
องค์ประกอบ <Source>
ช่วยให้คุณแทรก JavaScript ลงในการกำหนดค่า XML ของนโยบายได้โดยตรง โค้ด JavaScript ที่แทรกจะทำงานเมื่อนโยบายทำงานในโฟลว์ API
| ค่าเริ่มต้น: | ไม่มี |
| การแสดงตน: | ต้องระบุ <ResourceURL> หรือ <Source> หากมีทั้ง <ResourceURL> และ <Source> ระบบจะไม่สนใจ <ResourceURL> |
| ประเภท: | สตริง |
ตัวอย่าง
<Javascript name='JS-ParseJsonHeaderFullString' timeLimit='200' > <Properties> <Property name='inboundHeaderName'>specialheader</Property> <Property name='outboundVariableName'>json_stringified</Property> </Properties> <Source> var varname = 'request.header.' + properties.inboundHeaderName + '.values.string'; var h = context.getVariable(varname); if (h) { h = JSON.parse(h); h.augmented = (new Date()).valueOf(); var v = JSON.stringify(h, null, 2) + '\n'; // further indent var r = new RegExp('^(\S*)','mg'); v= v.replace(r,' $1'); context.setVariable(properties.outboundVariableName, v); } </Source> </Javascript>
องค์ประกอบ <SSLInfo>
ระบุพร็อพเพอร์ตี้ที่ใช้ในการกำหนดค่า TLS สำหรับอินสแตนซ์ไคลเอ็นต์ HTTP ทั้งหมดที่สร้างขึ้นโดย นโยบาย JavaScript
<SSLInfo> <Enabled>trueFalse</Enabled> <ClientAuthEnabled>trueFalse</ClientAuthEnabled> <KeyStore>ref://keystoreRef</KeyStore> <KeyAlias>keyAlias</KeyAlias> <TrustStore>ref://truststoreRef</TrustStore> </SSLInfo>
| ค่าเริ่มต้น: | ไม่มี |
| การแสดงตน: | ไม่บังคับ |
| ประเภท: | สตริง |
กระบวนการกำหนดค่า TLS สำหรับไคลเอ็นต์ HTTP เป็นกระบวนการเดียวกันกับที่คุณใช้กำหนดค่า TLS สำหรับ TargetEndpoint/TargetServer ดูข้อมูลเพิ่มเติมได้ที่การกำหนดค่า TLS จาก Edge ไปยังแบ็กเอนด์
หมายเหตุการใช้งาน
นโยบาย JavaScript ไม่มีโค้ดจริง แต่นโยบาย JavaScript จะอ้างอิงถึง "ทรัพยากร" JavaScript และกำหนดขั้นตอนในโฟลว์ API ที่ JavaScript ทำงาน คุณสามารถ
อัปโหลดสคริปต์ผ่านเครื่องมือแก้ไขพร็อกซีของ UI การจัดการ หรือจะรวมไว้ใน
ไดเรกทอรี /resources/jsc ในพร็อกซี API ที่คุณพัฒนาในเครื่องก็ได้
การแก้ไขข้อบกพร่องของโค้ดนโยบาย JavaScript
ใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังแผงเอาต์พุตของธุรกรรม ในเครื่องมือติดตาม ดูรายละเอียดและตัวอย่างได้ที่การแก้ไขข้อบกพร่องด้วยคำสั่ง JavaScript print()
วิธีดูคำสั่งพิมพ์ใน Trace
- เปิดเครื่องมือติดตามและเริ่มเซสชันการติดตามสำหรับพร็อกซีที่มีนโยบาย JavaScript
- โทรหาพร็อกซี
- ในเครื่องมือติดตาม ให้คลิกเอาต์พุตจากธุรกรรมทั้งหมดเพื่อเปิดแผงเอาต์พุต

- ใบแจ้งยอดที่พิมพ์จะปรากฏในแผงนี้
คุณสามารถใช้ฟังก์ชัน print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องในเครื่องมือติดตาม ฟังก์ชันนี้พร้อมใช้งานโดยตรง ผ่านโมเดลออบเจ็กต์ JavaScript ดูรายละเอียดได้ที่ "แก้ไขข้อบกพร่องของ JavaScript ด้วยคำสั่ง print()"
ตัวแปรโฟลว์
นโยบายนี้จะไม่สร้างตัวแปรใดๆ โดยค่าเริ่มต้น แต่คุณสามารถตั้งค่า (และรับ) ตัวแปรโฟลว์ ในโค้ด JavaScript ได้โดยการเรียกใช้เมธอดในออบเจ็กต์บริบท รูปแบบทั่วไป มีลักษณะดังนี้
context.setVariable("response.header.X-Apigee-Target", context.getVariable("target.name"))
ออบเจ็กต์บริบทเป็นส่วนหนึ่งของรูปแบบออบเจ็กต์ JavaScript ของ Apigee Edge
ข้อมูลอ้างอิงข้อผิดพลาด
ส่วนนี้จะอธิบายรหัสข้อผิดพลาดและข้อความแสดงข้อผิดพลาดที่ส่งกลับและตัวแปรข้อบกพร่อง ที่ Edge กำหนดไว้เมื่อนโยบายนี้ทริกเกอร์ข้อผิดพลาด ข้อมูลนี้สำคัญที่ควรทราบ หากคุณพัฒนากฎความผิด จัดการกับข้อผิดพลาด หากต้องการเรียนรู้เพิ่มเติม โปรดดูที่สิ่งที่คุณจำเป็นต้องทราบ เกี่ยวกับข้อผิดพลาดของนโยบายและการจัดการ ข้อผิดพลาด
ข้อผิดพลาดเกี่ยวกับรันไทม์
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อนโยบายทำงาน
| รหัสข้อผิดพลาด | สถานะ HTTP | สาเหตุ | แก้ไข |
|---|---|---|---|
steps.javascript.ScriptExecutionFailed |
500 | นโยบาย JavaScript สามารถแสดงข้อผิดพลาด ScriptExecutionFailed ประเภทต่างๆ ได้ พบได้ทั่วไป ประเภทข้อผิดพลาดที่เห็น ได้แก่ RangeError ReferenceError, SyntaxError TypeError และ URIError | build |
steps.javascript.ScriptExecutionFailedLineNumber |
500 | เกิดข้อผิดพลาดในโค้ด JavaScript ดูรายละเอียดจากสตริงข้อผิดพลาด | ไม่มี |
steps.javascript.ScriptSecurityError |
500 | เกิดข้อผิดพลาดด้านความปลอดภัยขณะเรียกใช้ JavaScript ดูสตริงข้อผิดพลาดสำหรับ รายละเอียด | ไม่มี |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
| ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
|---|---|---|
InvalidResourceUrlFormat |
หากรูปแบบของ URL ทรัพยากรที่ระบุภายในองค์ประกอบ <ResourceURL> หรือ <IncludeURL> ของนโยบาย JavaScript ไม่ถูกต้อง การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว |
build |
InvalidResourceUrlReference |
หากองค์ประกอบ <ResourceURL> หรือ <IncludeURL>
อ้างอิงไฟล์ JavaScript ที่ไม่มีอยู่ การติดตั้งใช้งานพร็อกซี API จะล้มเหลว
ไฟล์แหล่งที่มาที่อ้างอิงต้องมีอยู่ในพร็อกซี API, สภาพแวดล้อม หรือองค์กร |
build |
WrongResourceType |
ข้อผิดพลาดนี้เกิดขึ้นระหว่างการทำให้ใช้งานได้หาก <ResourceURL> หรือ <IncludeURL>
องค์ประกอบของนโยบาย JavaScript หมายถึงประเภททรัพยากรใดๆ ที่ไม่ใช่ jsc (ไฟล์ JavaScript) |
build |
NoResourceURLOrSource |
การทำให้นโยบาย JavaScript ใช้งานได้อาจล้มเหลวด้วยข้อผิดพลาดนี้ หาก <ResourceURL>
ไม่มีการประกาศองค์ประกอบ หรือไม่มีการระบุ URL ทรัพยากรภายในองค์ประกอบนี้
องค์ประกอบ <ResourceURL> เป็นองค์ประกอบที่จำเป็น หรือประกาศเอลิเมนต์ <IncludeURL>
แต่ URL ของทรัพยากรไม่ได้กำหนดไว้ภายในองค์ประกอบนี้ องค์ประกอบ <IncludeURL> เป็นค่าที่ไม่บังคับ
แต่หากมีการประกาศไว้ คุณต้องระบุ URL ทรัพยากรภายในองค์ประกอบ <IncludeURL> |
build |
ตัวแปรความผิดพลาด
ระบบจะตั้งค่าตัวแปรเหล่านี้เมื่อนโยบายนี้ทำให้เกิดข้อผิดพลาดขณะรันไทม์ สำหรับข้อมูลเพิ่มเติม ดูสิ่งที่คุณ ที่ต้องทราบเกี่ยวกับข้อผิดพลาดด้านนโยบาย
| ตัวแปร | สถานที่ | ตัวอย่าง |
|---|---|---|
fault.name="fault_name" |
fault_name คือชื่อของข้อผิดพลาดตามที่ระบุไว้ในตารางข้อผิดพลาดรันไทม์ด้านบน ชื่อข้อผิดพลาดคือส่วนสุดท้ายของรหัสข้อผิดพลาด | fault.name Matches "ScriptExecutionFailed" |
javascript.policy_name.failed |
policy_name คือชื่อที่ผู้ใช้ระบุของนโยบายที่เป็นสาเหตุของข้อผิดพลาด | javascript.JavaScript-1.failed = true |
ตัวอย่างการตอบสนองข้อผิดพลาด
{ "fault": { "faultstring": "Execution of SetResponse failed with error: Javascript runtime error: "ReferenceError: "status" is not defined. (setresponse.js:6)\"", "detail": { "errorcode": "steps.javascript.ScriptExecutionFailed" } } }
ตัวอย่างกฎข้อผิดพลาด
<FaultRule name="JavaScript Policy Faults"> <Step> <Name>AM-CustomErrorResponse</Name> <Condition>(fault.name Matches "ScriptExecutionFailed") </Condition> </Step> <Condition>(javascript.JavaScript-1.failed = true) </Condition> </FaultRule>
สคีมา
นโยบายแต่ละประเภทกำหนดโดยสคีมา XML (.xsd) โดยคุณดูสคีมานโยบาย
ได้ใน GitHub
หัวข้อที่เกี่ยวข้อง
- โมเดลออบเจ็กต์ JavaScript
- ดูวิธีการ ตัวอย่างนโยบาย และตัวอย่าง JavaScript ได้ที่การเขียนโปรแกรมพร็อกซี API ด้วย JavaScript
บทความในชุมชน Apigee
คุณดูบทความที่เกี่ยวข้องเหล่านี้ได้ในชุมชน Apigee