javascript - เกิดข้อผิดพลาดในการดึงข้อมูลเมื่อใช้ fetch API ในสคริปต์ Office
ฉันกำลังพยายามรันคำขอแบบ POST จาก Office Scripts บน API แต่ทุกครั้งที่ฉันเพิ่ม : "Content-type": "application/json" ลงใน header จะได้รับข้อผิดพลาด failed to fetch เสมอ แต่เมื่อฉันลบตัวเลือก content-type หรือเปลี่ยนค่าของมันเป็นอย่างอื่นที่ไม่ใช่ "application/json" คำขอ fetch ก็ทำงานได้ แต่จะส่งกลับข้อผิดพลาดรหัส 0 และข้อความข้อผิดพลาดการตรวจสอบความถูกต้องที่ระบุว่า userName และ password ('ซึ่งได้กำหนดค่าใน body แล้ว ไม่พบ') ด้านล่างคือตัวอย่างโค้ด
async function main(workbook: ExcelScript.Workbook) {
const param = {
method: "POST",
headers: {
//"Content-type": "application/json"
},
body: JSON.stringify({ user_id: "uname", password: "pwd"})
};
await fetch("https://testAPI/login/", param).then(response => response.json())
.then(data => console.log(data));
}
เกิดข้อผิดพลาดเมื่อฉันรันโค้ดนี้โดยตั้งค่า header เป็น Content-Type เป็น 'application/json' (บรรทัดที่ 33 มีคำสั่ง fetch):
บรรทัด 33: ดึงข้อมูลไม่สำเร็จ
เกิดข้อผิดพลาดเมื่อฉันรันโค้ดนี้โดยตั้งค่า content-Type เป็น 'text/plain', ตัวเลือกอื่น ๆ หรือการลบคุณสมบัติ content-type ออกจาก header โดยสมบูรณ์ :
นอกจากนี้ คำขอเดียวกันนี้จาก Postman หรือ Power Automate โดยมี header content-type ตั้งค่าเป็น 'application/json' ทำงานได้สำเร็จ ปัญหาจะเกิดขึ้นเฉพาะใน Office Script
คำตอบ #1
ปัญหาอาจเกี่ยวข้องกับ CORS ฉันต้องรวมส่วนหัว CORS บน API endpoint ที่ฉันพยายามเข้าถึง นี่อาจเป็นปัญหาเนื่องจากคุณบอกว่า รหัสสถานะ ของการตอบกลับคือ 0 ทำไม fetch ถึงส่งกลับการตอบกลับที่มีสถานะ=0?
ฉันได้เพิ่มหัวข้อดังต่อไปนี้ลงในเส้นทาง API:
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, OPTIONS
Access-Control-Allow-Headers: Content-Type, Authorization, X-Requested-For
นี่คือโค้ด OfficeScript ของฉันสำหรับอ้างอิง:
const response = await fetch(url, {
method: 'POST',
body: JSON.stringify(cellData),
headers: {
'Content-Type': 'application/json'
}
})
