การตอบกลับด้วยสถานะ: 0 สำหรับ URL: null

ฉันมีบริการทำโพสต์ บริการนี้ถูกโฮสต์อยู่ในเครื่องอื่น เมื่อฉันพยายามโพสต์โดยใช้บุรุษไปรษณีย์ มันก็ทำงานได้ดี ตอนนี้ เมื่อฉันพยายามโพสต์โดยใช้แอป Angular2 ซึ่งทำงานในเครื่องอื่น ฉันได้รับข้อผิดพลาด "การตอบกลับพร้อมสถานะ: 0 สำหรับ URL: null" รหัสในบริการเชิงมุมของฉันเป็นดังนี้:

postQuestions() {
    var json = JSON.stringify({
        "TestInfo_FK"  : "612",
        "Resource_FK"  : 0,
        "QuestionNo"   : 22,
        "ContentType"  : "HTML",
        "Content"      : "This is the question from Jason",
        "NoOptions"    : 4,
        "OptionLayout" : "Vertical",
        "Answer"       : "A"
    });


    var url = 'http://my.service.net/api/ONLINE/Question';
    var params = 'json=' + json;
    var headers = new Headers();
    headers.append('Content-Type', 'application/json');
    headers.append('Access-Control-Allow-Origin', '*');

    return this._http.post(url, params, {
        headers: headers
    })
    .map(res => res.json());
}

จะแก้ไขปัญหานี้อย่างไร?


person user1120260    schedule 09.08.2017    source แหล่งที่มา


คำตอบ (2)


สถานการณ์นี้เกิดขึ้นเมื่อบริการโฮสต์ของคุณไม่สามารถเข้าถึงได้ผ่าน cross origin (CORS) ดังนั้นหากคุณกำลังเข้าถึงบริการ Spring Rest ให้ใช้คำอธิบายประกอบ @CrossOrigin ในบริการ หรือใช้ flask-restful เพื่อสร้าง API ระยะไกล

จาก flask_restful.utils นำเข้า cors จาก flask_restful นำเข้า Api

api = Api (แอป, ผู้ตกแต่ง=[cors.crossdomain(origin='*')])

person Deepu    schedule 09.08.2017

ฉันพบสาเหตุของปัญหาแล้ว.. มันเป็นปัญหาฝั่งเซิร์ฟเวอร์ คุณต้องตั้งค่ามิดเดิลแวร์ CORS ก่อน จากนั้นจึงตั้งค่ามิดเดิลแวร์ API ที่เหลือ

โปรดทราบว่าฉันกำลังทำงานกับ Laravel 5.6 + Angular 5

รหัสผิด

'api' => [ 'throttle:60,1', 'bindings', \Barryvdh\Cors\HandleCors::class, ],

รหัสที่ถูกต้อง

'api' => [ \Barryvdh\Cors\HandleCors::class, 'throttle:60,1', 'bindings' ],

person Rameez Rami    schedule 07.05.2018