ข้อผิดพลาดนโยบาย CORS เชื่อมต่อกับ chat.postMessage ใน slack api พร้อมตั้งค่าส่วนหัวและไม่ได้ตั้งค่าใน React และ Redux [ซ้ำกัน]

ฉันพยายามส่งข้อความไปยัง slack api โดยใช้ React และ axios และเนื่องจากเหตุผลที่ไม่ทราบสาเหตุบางประการ ฉันจึงได้รับข้อผิดพลาดนโยบาย CORS

export const sendMessage = data => dispatch => {
    console.log(data);
    const message = {
        channel: data.currentChannelId,
        text: data.text
    };
    const token =
        "MY_TOKEN";

    const config = {
        "Content-Type": "application/json",
        "Authorization": `Bearer ${token}`
    };
    axios
        .post("https://slack.com/api/chat.postMessage", JSON.stringify(message), config)
        .then(res => {
            console.log(res);
            dispatch({
                type: actionTypes.SEND_MESSAGE,
                payload: data
            });
        })
        .catch(err =>
            dispatch({
                type: actionTypes.SEND_MESSAGE,
                payload: {}
            })
        );
};

ฉันได้ตรวจสอบคำถามมากมายที่ถูกถามที่นี่ และยังติดต่อฝ่ายสนับสนุนของ slack และได้รับข้อความต่อไปนี้:

เราได้เห็นนักพัฒนาซอฟต์แวร์ได้รับผลลัพธ์ที่ดีขึ้นโดยทำให้แน่ใจว่าพวกเขาไม่ได้ส่งส่วนหัวใดๆ ไปพร้อมกับคำขอของพวกเขา สิ่งนี้อาจทำให้เกิดข้อผิดพลาดก่อนการบินในส่วนของเรา

คุณลองดูว่ามันช่วยได้ไหม?

แน่นอนว่าการไม่ส่งส่วนหัวใดๆ นั้นเป็นไปไม่ได้ เนื่องจากเรากำลังส่งการอนุญาตในส่วนหัวของเราด้วย

ฉันพยายามลบเพียง "Content-Type": "application/json" และเกิดข้อผิดพลาดเดิมอีกครั้ง ฉันยังลองเปลี่ยนเป็น "Content-Type": "application/x-www-form-urlencoded"

ไม่มีการเปลี่ยนแปลงเกิดขึ้นทั้งสองกรณี ฉันได้รับข้อผิดพลาดนี้:

เข้าถึง XMLHttpRequest ได้ที่ 'https://slack.com/api/chat.postMessage' จาก origin 'http://localhost:3000' ถูกบล็อกโดยนโยบาย CORS: ไม่อนุญาตให้ใช้ประเภทเนื้อหาฟิลด์ส่วนหัวคำขอ โดย Access-Control-Allow-Headers ในการตอบกลับล่วงหน้า

แม้ว่าจะมีคำถามอื่นอีกมากมายและนี่อาจจะซ้ำกัน แต่ไม่มีคำตอบใดที่เหมาะกับปัญหาของฉัน


person Afshin    schedule 14.06.2019    source แหล่งที่มา
comment
@sideshowbarker เพื่อนรัก ฉันได้อ่านคำตอบสำหรับคำถามของคุณแล้ว แต่มันไม่ได้แก้ปัญหาของฉัน อย่างที่คุณเห็น ฉันได้กล่าวถึงในข้อความของฉันว่าฉันได้ลองลบ content-type แล้ว แต่ก็ไม่ได้ช่วยอะไรเลย อย่างน้อยคุณก็อ่านข้อความของฉันได้ แล้วทำเครื่องหมายว่าซ้ำกัน   -  person Afshin    schedule 14.06.2019
comment
จริงๆ แล้ว คุณลบส่วนหัวคำขอ Content-Type ไม่สำเร็จ หากคุณมี คุณจะยังคงได้รับข้อความที่ระบุว่า “Access-Control-Allow-Headers ไม่อนุญาตให้ใช้ประเภทเนื้อหาฟิลด์ส่วนหัวคำขอในการตอบกลับก่อนการบิน”   -  person sideshowbarker    schedule 14.06.2019
comment
คุณหมายถึงอะไรโดยการลบมันออกสำเร็จ? ฉันทำอย่างนั้นจริงๆ   -  person Afshin    schedule 14.06.2019
comment
ฉันได้รับข้อผิดพลาดเดียวกันและแก้ไขได้โดยการเพิ่มส่วนหัวเหล่านี้ในฝั่งเซิร์ฟเวอร์ API Access-Control-Allow-Origin: * Access-Control-Allow-Methods: POST, GET, PUT, DELETE Access-Control-Allow-Headers: Authorization   -  person himanshu    schedule 14.06.2019
comment
@himanshu ฉันกำลังลองสิ่งนี้บน localhost และเพิ่ม Access-Control-Allow-Origin: * สิ่งนี้ลงในส่วนหัวที่ส่งโดย axios คุณหมายถึงสิ่งนี้เหรอ?   -  person Afshin    schedule 14.06.2019
comment
@sideshowbarker คุณช่วยฉันด้วยรหัสได้ไหม ฉันต้องการมันจริงๆ :-(   -  person Afshin    schedule 14.06.2019


คำตอบ (1)


ลบส่วนหัว Content-Type ออกจากคำขอของคุณ จุดสิ้นสุด API ของ Slack ไม่ส่งการตอบกลับด้วย Access-Control-Allow-Headers ดังนั้น preflight จึงล้มเหลว

person Mezbaul Haque    schedule 14.06.2019
comment
ดังที่ฉันกล่าวถึงในคำถามของฉัน ฉันทำไปแล้ว โปรดตรวจสอบคำถามของฉันอีกครั้ง! - person Afshin; 14.06.2019