คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
อะไร
นโยบายนี้ช่วยให้คุณเพิ่มโค้ด JavaScript ที่กำหนดเองซึ่งทำงานภายในบริบทของโฟลว์พร็อกซี API ได้ คุณใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript ของ Apigee Edge ได้ในโค้ด JavaScript ที่กำหนดเอง โมเดลออบเจ็กต์จะช่วยให้คุณรับ ตั้งค่า และนำตัวแปรออกในบริบทโฟลว์พร็อกซีได้ คุณยังใช้ฟังก์ชันวิทยาการเข้ารหัสลับพื้นฐานที่มาพร้อมกับโมเดลออบเจ็กต์ได้ด้วย
เกี่ยวกับ
การใช้งานนโยบาย JavaScript มีอยู่หลายกรณี ตัวอย่างเช่น คุณสามารถรับและตั้งค่าตัวแปรโฟลว์ เรียกใช้ตรรกะที่กำหนดเอง และจัดการข้อผิดพลาด ดึงข้อมูลจากคำขอหรือการตอบกลับ แก้ไข URL เป้าหมายแบ็กเอนด์แบบไดนามิก และอื่นๆ อีกมากมาย นโยบายนี้อนุญาตให้คุณใช้งานลักษณะการทำงานที่กำหนดเองซึ่งไม่อยู่ภายใต้นโยบาย Edge มาตรฐานอื่นๆ ที่จริงแล้ว ใช้นโยบาย JavaScript เพื่อทำลักษณะการทำงานที่เหมือนกันหลายอย่างซึ่งนโยบายอื่นๆ นำมาใช้ เช่น AssignMessage และ ExtractVariable
กรณีการใช้งานอย่างหนึ่งที่เราไม่แนะนำสำหรับนโยบาย JavaScript คือการบันทึก นโยบายการบันทึกข้อความเหมาะกับการบันทึกแพลตฟอร์มการบันทึกของบุคคลที่สาม เช่น Splunk, Sumo และ Loggly มากกว่ามาก และคุณยังปรับปรุงประสิทธิภาพของพร็อกซี API ด้วยการบังคับใช้นโยบายการบันทึกข้อความใน PostClientFlow ซึ่งจะทำงานหลังจากส่งการตอบกลับไปยังไคลเอ็นต์แล้ว
นโยบาย JavaScript ให้คุณระบุไฟล์ต้นฉบับ JavaScript ที่จะเรียกใช้ หรือคุณจะใส่โค้ด JavaScript โดยตรงในการกำหนดค่าของนโยบายด้วยองค์ประกอบ <Source>
ก็ได้
ไม่ว่าจะด้วยวิธีใด โค้ด JavaScript จะทำงานเมื่อขั้นตอนที่แนบนโยบายทำงานอยู่
สำหรับตัวเลือกไฟล์ต้นฉบับ ระบบจะจัดเก็บซอร์สโค้ดในตำแหน่งมาตรฐานภายในกลุ่มพร็อกซีเสมอ: apiproxy/resources/jsc
หรือคุณจะจัดเก็บซอร์สโค้ดในไฟล์ทรัพยากรในระดับสภาพแวดล้อมหรือองค์กรก็ได้ ดูวิธีการได้ที่ไฟล์ทรัพยากร หรือจะอัปโหลด JavaScript ผ่านเครื่องมือแก้ไขพร็อกซี UI ของ Apigee ก็ได้
ไฟล์ต้นฉบับ JavaScript ต้องมีส่วนขยาย .js
เสมอ
ดูซอฟต์แวร์ที่รองรับและเวอร์ชันที่รองรับสำหรับ JavaScript เวอร์ชันที่รองรับในปัจจุบัน
วิดีโอ
ดูวิดีโอสั้นๆ เกี่ยวกับวิธีสร้างส่วนขยายนโยบายที่กำหนดเองโดยใช้นโยบาย JavaScript
ลองฟัง
เขียน URL เป้าหมายใหม่
กรณีการใช้งานทั่วไปคือ การดึงข้อมูลจากเนื้อหาคําขอ จัดเก็บข้อมูลไว้ในตัวแปรโฟลว์ และใช้ตัวแปรโฟลว์นั้นที่อื่นในโฟลว์พร็อกซี สมมติว่าคุณมีแอป ที่ผู้ใช้ป้อนชื่อของตนเองในแบบฟอร์ม HTML และส่งแอป คุณต้องการให้พร็อกซี API ดึงข้อมูลแบบฟอร์มและเพิ่มลงใน URL ที่ใช้เรียกบริการแบ็กเอนด์แบบไดนามิก คุณจะดำเนินการอย่างไรในนโยบาย JavsScript
หมายเหตุ: หากต้องการลองใช้ตัวอย่างนี้ เราจะถือว่าคุณได้สร้างพร็อกซีใหม่ในเครื่องมือแก้ไขพร็อกซี เมื่อสร้าง URL แล้ว เพียงกำหนด URL บริการแบ็กเอนด์เป็น http://www.example.com ในตัวอย่างนี้ เราจะเขียน URL แบ็กเอนด์ใหม่แบบไดนามิก หากคุณไม่ทราบวิธีสร้างพร็อกซีใหม่ โปรดดูบทแนะนำการเริ่มต้นใช้งาน
- ใน Edge UI ให้เปิดพร็อกซีที่คุณสร้างไว้ในเครื่องมือแก้ไขพร็อกซี
- เลือกแท็บพัฒนา
- เลือกสคริปต์ใหม่จากเมนู "ใหม่"
- ในกล่องโต้ตอบ ให้เลือก JavaScript แล้วตั้งชื่อสคริปต์ เช่น
js-example
- วางโค้ดต่อไปนี้ลงในตัวแก้ไขโค้ด และบันทึกพร็อกซี สิ่งสำคัญที่ควรสังเกตคือออบเจ็กต์
context
ออบเจ็กต์นี้พร้อมใช้งานสำหรับโค้ด JavaScript ที่ใดก็ได้ในโฟลว์พร็อกซี ใช้เพื่อรับค่าคงที่เฉพาะโฟลว์ เพื่อเรียกใช้เมธอด get/set ที่มีประโยชน์ และสำหรับการดำเนินการเพิ่มเติม ส่วนออบเจ็กต์นี้คือโมเดลออบเจ็กต์ JavaScript ของ Edge โปรดทราบด้วยว่าตัวแปรโฟลว์target.url
เป็นตัวแปรแบบอ่าน/เขียนในตัวที่เข้าถึงได้ในขั้นตอนคำขอเป้าหมาย เมื่อเราตั้งค่าตัวแปรนั้นด้วย URL ของ API แล้ว Edge จะเรียกใช้แบ็กเอนด์ไปยัง 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
ยอมรับค่าเริ่มต้นและบันทึกนโยบาย - หากเลือกโฟลว์ปลายทางพร็อกซีใน Navigator คุณจะเห็นว่ามีการเพิ่มนโยบายลงในขั้นตอนนั้นแล้ว
- ใน Navigator ให้เลือกไอคอน Target Endpoint PreFlow
- จาก Navigator ให้ลากนโยบาย 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 |
ตั้งค่าเป็น ตั้งค่าเป็น |
false | ไม่บังคับ |
enabled |
ตั้งค่าเป็น ตั้งค่าเป็น |
จริง | ไม่บังคับ |
async |
แอตทริบิวต์นี้เลิกใช้งานแล้ว |
false | เลิกใช้ |
องค์ประกอบ <DisplayName>
ใช้เพิ่มเติมจากแอตทริบิวต์ name
เพื่อติดป้ายกำกับนโยบายในเครื่องมือแก้ไขพร็อกซี UI การจัดการด้วยชื่อที่เป็นภาษาธรรมชาติที่แตกต่างออกไป
<DisplayName>Policy Display Name</DisplayName>
ค่าเริ่มต้น |
ไม่มีข้อมูล หากคุณไม่ใส่องค์ประกอบนี้ ระบบจะใช้ค่าของแอตทริบิวต์ |
---|---|
การมีบุคคลอยู่ | ไม่บังคับ |
Type | สตริง |
องค์ประกอบ <IncludeURL>
ระบุไฟล์ไลบรารี JavaScript ที่จะโหลดเป็นทรัพยากร Dependency ของไฟล์ JavaScript หลักที่ระบุไว้ด้วยองค์ประกอบ <ResourceURL>
หรือ <Source>
สคริปต์จะได้รับการประเมินตามลำดับที่ระบุไว้ในนโยบาย โค้ดของคุณใช้ออบเจ็กต์ เมธอด และพร็อพเพอร์ตี้ของโมเดลออบเจ็กต์ JavaScript ได้
รวมทรัพยากรทรัพยากร Dependency ของ 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 หรือในส่วนสคริปต์ของแผงการนำทางของเครื่องมือแก้ไขพร็อกซี 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() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังแผงเอาต์พุตธุรกรรมในเครื่องมือติดตาม โปรดดูรายละเอียดและตัวอย่างที่หัวข้อ "แก้ไขข้อบกพร่องด้วยคำสั่ง print()" ของ JavaScript
หากต้องการดูใบแจ้งยอดสิ่งพิมพ์ใน Trace:
- เปิดเครื่องมือติดตามและเริ่มเซสชันการติดตามสำหรับพร็อกซีที่มีนโยบาย JavaScript ของคุณ
- เรียกใช้พร็อกซี
- ในเครื่องมือติดตาม ให้คลิกเอาต์พุตจากธุรกรรมทั้งหมดเพื่อเปิดแผงเอาต์พุต
- ใบแจ้งยอดการพิมพ์จะปรากฏในแผงนี้
คุณสามารถใช้ฟังก์ชัน Print() เพื่อแสดงข้อมูลการแก้ไขข้อบกพร่องไปยังเครื่องมือติดตาม ฟังก์ชันนี้พร้อมใช้งานโดยตรงผ่านโมเดลออบเจ็กต์ JavaScript โปรดดูรายละเอียดที่ "แก้ไขข้อบกพร่อง JavaScript ด้วยคำสั่ง ให้พิมพ์()"
ตัวแปรของโฟลว์
นโยบายนี้ไม่ได้ป้อนข้อมูลตัวแปรใดๆ โดยค่าเริ่มต้น แต่คุณตั้งค่า (และรับ) ตัวแปรโฟลว์ในโค้ด 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 ดูรายละเอียดได้ในสตริง Fault | ไม่มีข้อมูล |
ข้อผิดพลาดในการทำให้ใช้งานได้
ข้อผิดพลาดเหล่านี้อาจเกิดขึ้นเมื่อคุณใช้พร็อกซีที่มีนโยบายนี้
ชื่อข้อผิดพลาด | สาเหตุ | แก้ไข |
---|---|---|
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 ได้ที่พร็อกซี Programming API กับ JavaScript
บทความในชุมชน Apigee
คุณดูบทความที่เกี่ยวข้องเหล่านี้ได้ในชุมชน Apigee