एपीआई गेटवे कॉर्स: कोई 'प्रवेश-नियंत्रण-अनुमति-उत्पत्ति' हेडर नहीं


102

यद्यपि कॉर्स को एपीआई गेटवे के माध्यम से स्थापित किया गया है और Access-Control-Allow-Originहेडर सेट किया गया है, फिर भी क्रोम के भीतर AJAX से एपीआई को कॉल करने का प्रयास करते समय मुझे निम्न त्रुटि प्राप्त होती है:

XMLHttpRequest http://XXXXX.execute-api.us-west-2.amazonaws.com/beta/YYYYY लोड नहीं कर सकता । अनुरोधित संसाधन पर कोई 'एक्सेस-कंट्रोल-अनुमति-उत्पत्ति' हेडर मौजूद नहीं है। उत्पत्ति 'अशक्त' इसलिए पहुंच की अनुमति नहीं है। प्रतिक्रिया में HTTP स्थिति कोड 403 था।

मैंने डाकिया के माध्यम से URL प्राप्त करने का प्रयास किया है और यह दिखाता है कि उपरोक्त हेडर सफलतापूर्वक पारित हो गया है:

पारित हेडर

और विकल्प से प्रतिक्रिया:

रिस्पांस हेडर

मैं JSON-P को देखे बिना अपने API को ब्राउज़र से कैसे कॉल कर सकता हूं?


क्या आपने इसे S3 पर सेट किया है? यदि हां, तो क्या आप डाल सकते हैं Bucket Policy? सुनिश्चित करें कि आपके पास अपनी नीति में विधि है
iSkore

10
एपीआई गेटवे टीम यहां ... यदि आप कंसोल में 'सक्षम कोर' सुविधा का उपयोग करते हैं, तो कॉन्फ़िगरेशन सही होना चाहिए। मेरा सबसे अच्छा अनुमान यह होगा कि आप जावास्क्रिप्ट में अपने एपीआई में सही संसाधन पथ को लागू नहीं कर रहे हैं जो ब्राउज़र निष्पादित कर रहा है। यदि आप किसी गैर-मौजूद विधि / संसाधन / चरण में API कॉल करने का प्रयास करते हैं, तो आपको कोई भी कोरस हेडर नहीं के साथ एक सामान्य 403 प्राप्त होगा। मैं यह नहीं देखता कि ब्राउजर एक्सेस-कंट्रोल-अलाउंस-ओरिजिन हेडर को कैसे मिस कर सकता है, यदि आप सही संसाधन को कॉल कर रहे हैं क्योंकि पोस्टमैन के विकल्प कॉल में स्पष्ट रूप से सभी सही कॉर्स हेडर हैं।
जैकको

1
@ रयान-एडब्ल्यूएस क्लाइंट अनुरोध पर हस्ताक्षर नहीं कर रहा है क्योंकि एपीआई उस संसाधन द्वारा प्रमाणित है जिसे वह उपयोगकर्ता-विशिष्ट टोकन का उपयोग करके कॉल करता है, इसलिए क्रेडेंशियल्स एक कारक नहीं हैं। मैं ब्राउज़र में सीधे यूआरएल पर जाकर एपीआई को कॉल कर सकता हूं और मुझे उचित प्रतिक्रिया मिलती है।
टायलर

2
@makinbacon: क्या आपको इसके लिए कोई समाधान मिला? मैं यहां उसी मुद्दे से गुजर रहा हूं।
निर्मल

1
मेरे तरीके और मंच स्वचालित रूप से लैम्ब्डा द्वारा उत्पन्न किए गए थे। मैंने तथ्य के बाद कॉर्स को सक्षम किया। ओपी के रूप में एक ही त्रुटियों। मैंने ऑटो जेनरेट किए गए सामान को उड़ा दिया, एक नया एपीआई और तरीके बनाए, एक नए चरण में तैनात किया, और यह ठीक काम किया।
स्कैल

जवाबों:


116

मुझे भी यही समस्या है। मैंने खोजने के लिए 10hrs का उपयोग किया है।

https://serverless.com/framework/docs/providers/aws/events/apigateway/

// handler.js

'use strict';

module.exports.hello = function(event, context, callback) {

const response = {
  statusCode: 200,
  headers: {
    "Access-Control-Allow-Origin" : "*", // Required for CORS support to work
    "Access-Control-Allow-Credentials" : true // Required for cookies, authorization headers with HTTPS 
  },
  body: JSON.stringify({ "message": "Hello World!" })
};

callback(null, response);
};

समस्या का समाधान मैं भी कर रहा था। आपके उत्तर के लिए धन्यवाद!
एरिक ब्राउन

मैं सर्वर रहित का उपयोग नहीं करता, लेकिन इससे मेरी समस्या हल हो गई। लगता है कि आपको वास्तविक स्रोत से उन हेडर को पास करने की आवश्यकता है।
कोस्टा

2
FYI करें, यहाँ प्रस्तुत उदाहरण के साथ एक समस्या है। यदि आपके पास "एक्सेस-कंट्रोल-अलाउंस-क्रेडेंशियल्स": सच है, तो आपके पास एक्सेस-कंट्रोल-अलाउंस-ओरिजिन के लिए वाइल्डकार्ड * नहीं हो सकता है। यह नियम ब्राउज़र द्वारा लागू किया जाता है। यहाँ और यहाँ
केविन

1
यह काम नहीं कर रहा है, फिर से एक ही त्रुटि दिखाता है हेडर फील्ड एक्सेस-कंट्रोल-कंट्रोल-अनुमति-क्रेडेंशियल्स को एक्सेस-कंट्रोल-अलाउंस-हेडर्स द्वारा प्रीफ्लाइट प्रतिक्रिया में अनुमति नहीं दी जाती है।
मितेश m१ Jan२

आप यह कैसे कर सकते हैं java RequestHandler <RequestClass, ResponseClass> वर्ग के साथ?
Snedden27

104

अगर कोई और अभी भी इसमें चल रहा है - मैं अपने आवेदन में मूल कारण को ट्रैक करने में सक्षम था।

यदि आप कस्टम ऑथराइजर्स के साथ एपीआई-गेटवे चला रहे हैं - एपीआई-गेटवे वास्तव में आपके सर्वर को हिट करने से पहले 401 या 403 वापस भेज देगा। डिफ़ॉल्ट रूप से - एपीआई-गेटवे एक कॉर्ड के लिए कॉन्फ़िगर नहीं किया जाता है जब एक कस्टम ऑथराइज़र से 4xx लौटाता है।

इसके अलावा - यदि आप एपीआई गेटवे के माध्यम से चल रहे अनुरोध का 0या उससे एक स्टेटस कोड प्राप्त कर 1रहे हैं, तो यह संभवतः आपका मुद्दा है।

ठीक करने के लिए - एपीआई गेटवे कॉन्फ़िगरेशन में - "गेटवे रिस्पॉन्स" पर जाएं, "डिफ़ॉल्ट 4XX" का विस्तार करें और वहां एक कॉर्स हेडर जोड़ें। अर्थात

Access-Control-Allow-Origin: '*'

अपने प्रवेश द्वार को फिर से तैनात करना सुनिश्चित करें - और वॉइला!


7
मैं तुमसे प्यार करता हूँ। गंभीरता से दो दिनों के लिए इस पर काम कर रहा था।
efong5

4
AWS सीएलआई के साथ ऐसा करने के इच्छुक लोगों के लिए, का उपयोग करें:aws apigateway update-gateway-response --rest-api-id "XXXXXXXXX" --response-type "DEFAULT_4XX" --patch-operations op="add",path="/responseParameters/gatewayresponse.header.Access-Control-Allow-Origin",value='"'"'*'"'"'
विल

1
मैं कस्टम ऑथोराइज़र का उपयोग नहीं कर रहा हूँ और अभी भी इसकी आवश्यकता है क्योंकि मेरे अनुरोध में इसमें JSON खराब था - धन्यवाद!
फोर्स हीरो

9
खुद पर ध्यान दें - एपीआई को बाद में तैनात करने के लिए मत भूलना :)
danieln

2
अजीब बात है, यह मेरे लिए काम करता है, लेकिन मुझे फिर से तैयार नहीं करना पड़ा। मैंने पहले redeploying की कोशिश की। यकीन नहीं होता कि यह मेरे लिए क्यों काम किया।
माइकल

19

1) मुझे @riseres और कुछ अन्य परिवर्तनों के समान करने की आवश्यकता है। यह मेरी प्रतिक्रिया हेडर हैं:

headers: {
            'Access-Control-Allow-Origin' : '*',
            'Access-Control-Allow-Headers':'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token',
            'Access-Control-Allow-Credentials' : true,
            'Content-Type': 'application/json'
        }

2) और

इस दस्तावेज़ के अनुसार:

http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-cors.html

जब आप एपीआई गेटवे कॉन्फिगर पर लंबो कार्यों के लिए प्रॉक्सी का उपयोग करते हैं, तो पोस्ट या विधियों में कोई जोड़ा हेडर नहीं होता है, केवल विकल्प होता है। आपको इसे मैन्युअल रूप से प्रतिक्रिया (सर्वर या लैम्ब्डा प्रतिक्रिया) में करना होगा।

3) और

इसके अलावा, मुझे अपने एपीआई गेटवे पोस्ट विधि में 'एपीआई कुंजी आवश्यक' विकल्प को निष्क्रिय करने की आवश्यकता थी।


5
हां, मुझे लगता है कि सूक्ष्म रूप से हम में से बहुत से लोगों को शुरू में याद आती है कि एक बार जब आप अपने एपीआई गेटवे एकीकरण को "लैम्बडा प्रॉक्सी प्रॉक्सी का उपयोग करें" के साथ लैंबडा फ़ंक्शन के लिए कॉन्फ़िगर करते हैं, तो आपको ऐसा करना चाहिए जैसा कि आप और अन्य लोग कर रहे हैं और सुनिश्चित करें कि हेडर जोड़ा गया है। आपके लैम्ब्डा की प्रतिक्रिया में प्रोग्रामेटिक रूप से। एपीआई गेटवे पर "एनर्जिंग कॉर्स" द्वारा बनाया गया ऑटो-जेनर सामान और यह एक ऑप्‍शन रिस्‍पॉन्‍डर बनाने के लिए बहुत अच्‍छा है, लेकिन एपीआई में इंटीग्रेशन रिक्‍वेस्‍ट में "लैम्‍ब्डा प्रॉक्सी इंटीग्रेशन का उपयोग करें" सेट करने पर आपको यह सब रास नहीं आता है। गेटवे।

1
यह मेरे लिए काम करता है ... मैन्युअल को ठीक से पढ़ने के बाद: महत्वपूर्ण जब प्रॉक्सी निर्देश में किसी भी विधि के लिए उपरोक्त निर्देशों को लागू किया जाता है, तो कोई भी लागू कोर हेडर सेट नहीं किया जाएगा। इसके बजाय, आपके बैकएंड को लागू कॉर्स हेडर, जैसे कि एक्सेस-कंट्रोल-अलाउंस-ओरिजिन, को वापस करना होगा। docs.aws.amazon.com/apigateway/latest/developerguide/…
BennyHilarious

14

यदि आपने इस मुद्दे के बारे में बिना किसी लाभ के सब कुछ करने की कोशिश की है, तो आप समाप्त कर देंगे जहां मैंने किया था। यह पता चला है, अमेज़ॅन के मौजूदा कोर सेटअप दिशा-निर्देश ठीक काम करते हैं ... बस यह सुनिश्चित करें कि आप फिर से तैयार करना याद रखें ! कॉर्स संपादन विज़ार्ड, यहां तक ​​कि अपने सभी अच्छे छोटे हरे चेकमार्क के साथ, अपने एपीआई में लाइव अपडेट नहीं करता है। शायद स्पष्ट है, लेकिन इसने मुझे आधे दिन के लिए रोक दिया।

यहाँ छवि विवरण दर्ज करें


यही था वह। सचमुच दो दिनों के लिए इस पर काम कर रहे हैं। गेटवे को एडिट करने के बाद कम से कम रेडिप्लॉय के लिए तर्क नहीं करना सुनिश्चित करें।
क्रिस क्रिस्टेंसन

@ChrisChristensen को खुशी है कि आपको यह समझ में आ गया - हमेशा कुछ ऐसा होता है जो अभी तक अविश्वसनीय रूप से इस तरह की समस्याओं के बारे में पराजित करता है
lase

यह उत्तर है जो 2020 में मान्य है। धन्यवाद
राहुल खन्ना

RE-DEPLOY RE-DPLOY RE-DEPLOY
सुरजीत एस.एम.

11

मेरा नमूना काम कर रहा है: मैंने सिर्फ 'एक्सेस-कंट्रोल- अलाउंस -ओरिजिन': '*' डाला , हेडर के अंदर : {} जेनरेट किए गए नोडज लैम्बडा फंक्शन में। मैंने लैम्ब्डा-जनरेटेड एपीआई लेयर में कोई बदलाव नहीं किया

यहाँ मेरा NodeJS है:

'use strict';
const doc = require('dynamodb-doc');
const dynamo = new doc.DynamoDB();
exports.handler = ( event, context, callback ) => {
    const done = ( err, res ) => callback( null, {
        statusCode: err ? '400' : '200',
        body: err ? err.message : JSON.stringify(res),
        headers:{ 'Access-Control-Allow-Origin' : '*' },
    });
    switch( event.httpMethod ) {
        ...
    }
};

यहाँ मेरा AJAX कॉल है

$.ajax({
    url: 'https://x.execute-api.x-x-x.amazonaws.com/prod/fnXx?TableName=x',
    type: 'GET',
    beforeSend: function(){ $( '#loader' ).show();},
    success: function( res ) { alert( JSON.stringify(res) ); },
    error:function(e){ alert('Lambda returned error\n\n' + e.responseText); },
    complete:function(){ $('#loader').hide(); }
});

मैंने अमेज़ॅन के बहुत सारे दस्तावेज़ आउट-ऑफ़-डेट होने के लिए, यहां तक ​​कि "../latest/ .." पथ के टुकड़े के साथ पाया है। लगभग एक हफ़्ते पहले से स्क्रैपिंग के बाद, कॉर्स बटन ने अचानक ठीक से काम करने की बात कही। एपीआई ने स्वचालित रूप से "कोई भी" विधि बनाई और कोर बटन ने स्वचालित रूप से "विकल्प" विधि बनाई - मैंने एपीआई में कुछ भी नहीं जोड़ा। "GET" ऊपर काम करता है और मैंने तब से "अजाक्स" POST जोड़ा है जो मेरे बिना एपीआई को छूने के बिना भी काम करता है।
मैन्नी

मैंने लगभग दो घंटे बिताए कि एडब्ल्यूएस कंसोल का उपयोग करके विधि प्रतिक्रिया में एक्सेस-कंट्रोल-अनुमति-उत्पत्ति कैसे प्राप्त की जाए, लेकिन यह केवल एक चीज थी जो मेरे लिए काम करती थी।
Shn_Android_Dev

8

गोगलर्स के लिए:

यहाँ क्यों है:

  • सरल अनुरोध, या, GET/ POSTबिना कुकीज़ वाले प्रीफ़्लाइट को ट्रिगर नहीं करते हैं
  • जब आप किसी पथ के लिए CORS कॉन्फ़िगर करते हैं, तो API गेटवे केवल OPTIONSउस पथ के लिए एक विधि बनाएगा , तब Allow-Originउपयोगकर्ता कॉल करते समय नकली प्रतिक्रियाओं का उपयोग करके हेडर भेजें OPTIONS, लेकिन GET/ स्वचालित रूप POSTसे नहीं मिलेगाAllow-Origin
  • यदि आप कोर्स मोड पर सरल अनुरोध भेजने की कोशिश करते हैं, तो आपको एक त्रुटि मिलेगी क्योंकि उस प्रतिक्रिया का कोई Allow-Originहेडर नहीं है
  • आप सबसे अच्छे अभ्यास का पालन कर सकते हैं, सरल अनुरोध उपयोगकर्ता को प्रतिक्रिया भेजने के लिए नहीं हैं, इसे "सरल नहीं" बनाने के लिए आपके अनुरोधों के साथ प्रमाणीकरण / कुकी भेजें।
  • फिर भी, आपको निम्नलिखित अनुरोध के लिए अपने आप को कोरस हेडर भेजना होगा OPTIONS

इसका सारांश प्रस्तुत करना:

  • OPTIONSएपीआई गेटवे द्वारा स्वचालित रूप से केवल हानिरहित उत्पन्न किया जाएगा
  • OPTIONSएक मार्ग पर कॉर्स की संभावना की जांच करने के लिए केवल एहतियाती उपाय के रूप में ब्राउज़र द्वारा उपयोग किया जाता है
  • क्या कोर को स्वीकार किया जाता है, वास्तविक विधि पर निर्भर करता है जैसे GET/POST
  • आपको अपनी प्रतिक्रिया में मैन्युअल रूप से उपयुक्त हेडर भेजना होगा

5

मैंने सिर्फ अपने लंबो फंक्शन रिस्पॉन्स में हेडर जोड़ा और यह एक आकर्षण की तरह काम किया

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        body: JSON.stringify('Hey it works'),
        headers:{ 'Access-Control-Allow-Origin' : '*' }
    };
    return response;
};

4

मुझे भीतर एक सरल समाधान मिला

एपीआई गेटवे> अपना एपीआई एंडपॉइंट चुनें> विधि चुनें (मेरे मामले में यह POST था)

अब एक ड्रॉपडाउन एक्टिविटी है> सक्षम कॉर्स .. इसे चुनें।

अब ड्रॉपडाउन एक्शन फिर से सेलेक्ट करें> डिप्लॉय एपीआई (इसे फिर से तैनात करें)

यहाँ छवि विवरण दर्ज करें

इसने काम कर दिया !


इस उत्तर को क्यों वोट दिया गया है, लेकिन नीचे अन्य समान उत्तर हैं?
दिनेश कुमार

एडब्ल्यूएस आधारित एपीआई प्रवेश द्वार के लिए, यह समाधान काम करता है
ईवाएल

3

मुझे लगने के बाद मुझे काम करना शुरू हुआ कि लैम्ब्डा ऑथराइज़र विफल हो रहा था और कुछ अज्ञात कारणों से जिसे कॉर्स त्रुटि में अनुवाद किया जा रहा था। मेरे लेखक (और कुछ लेखक परीक्षण जो मुझे पहली जगह में जोड़ने चाहिए थे) के लिए एक साधारण सुधार। मेरे लिए API गेटवे एक्शन 'Enable CORS' की आवश्यकता थी। इसने मेरे हेडर में आवश्यक सभी हेडर और अन्य सेटिंग्स को जोड़ा।


और फिर से तैनात! :)
रॉबिन सी सैमुअल

2

अपना फ़ंक्शन या कोड बदलने के बाद इन दो चरणों का पालन करें।

पहले सक्षम करें फिर हर बार एपीआई को तैनात करें


उसके लिये आपका धन्यवाद। संसाधन में "सक्षम कॉर्स" पर ध्यान नहीं दिया। मेरा दिमाग खराब कर दिया।
श्लोमी बाज़ल

2

दोनों के लिए CORS को सक्षम करने के बाद कोड तैनात करना POSTऔर OPTIONSमेरे लिए काम करना।


1
आपके योगदान के लिए धन्यवाद, लेकिन क्या आप बता सकते हैं कि इसने आपके लिए काम क्यों किया? मैं आपको अपने उत्तर को बेहतर बनाने के लिए इस गाइड को पढ़ने के लिए आमंत्रित करता हूं: "मैं कैसे एक अच्छा उत्तर लिखता हूं" यहां: stackoverflow.com/help/how-to-answer
Guillaume Raymond

2

मेरे लिए, अंतिम रूप से काम करने वाला उत्तर, एलेक्स आर के उत्तर (दूसरा सबसे अधिक उत्थान) से जेम्स शापिरो की टिप्पणी थी। मैं पहली बार इस एपीआई गेटवे समस्या में आया, संपर्क 3 पेज को संसाधित करने और एक ईमेल भेजने के लिए लैम्ब्डा का उपयोग करने के लिए S3 में होस्ट किए गए स्थिर वेबपेज को प्राप्त करने का प्रयास करके। बस जाँच [] डिफ़ॉल्ट 4XX त्रुटि संदेश तय किया।

यहाँ छवि विवरण दर्ज करें


आपको यह मेनू कहां मिलेगा? मैं इसे कहीं नहीं देखता।
निक एच

@ नीक रवि राम की तस्वीर पर एक नज़र डालें। "कार्रवाई" के तहत, "सक्षम कॉर्स" नामक एक आइटम होना चाहिए और जब आप इसका चयन करते हैं, तो मेनू दिखाई देगा।
जेसन

1

मैं भाग रहा हूं aws-serverless-express, और मेरे मामले में संपादित करने की आवश्यकता है simple-proxy-api.yaml

इससे पहले कि कॉर्स को कॉन्फ़िगर किया गया था https://example.com, मैंने बस अपनी साइट के नाम की अदला-बदली की npm run setupऔर इसके माध्यम से फिर से लिखा , और इसने मेरे मौजूदा लैम्ब्डा या स्टैक को अपडेट किया।

#...
/:
#...
method.response.header.Access-Control-Allow-Origin: "'https://example.com'"
#...
/{proxy+}:
method.response.header.Access-Control-Allow-Origin: "'https://example.com'"
#...

1

मेरे मामले में, चूंकि मैं एपीआई गेटवे के लिए प्राधिकरण विधि के रूप में AWS_IAM का उपयोग कर रहा था, इसलिए मुझे समापन बिंदु को हिट करने के लिए अपनी IAM भूमिका की अनुमति देने की आवश्यकता थी।


2
यार मैं खुश हूं कि मैंने यह टिप्पणी छोड़ दी। मेरे साथ ऐसा होता रहता है: डी।
CamHart

मैं भविष्य के प्रतिवर्ती मुद्दे का अपना समाधान खोजना पसंद करता हूं।
ज़ैक ग्रियर्सन

0

इस समस्या का एक और मूल कारण HTTP / 1.1 और HTTP / 2 के बीच अंतर हो सकता है।

लक्षण: हमारे सॉफ्टवेयर का उपयोग करते समय कुछ उपयोगकर्ताओं ने, सभी ने नहीं, एक CORS त्रुटि प्राप्त करने की सूचना दी।

समस्या:Access-Control-Allow-Origin शीर्ष लेख याद आ रही थी कभी कभी

संदर्भ: हमारे पास एक लैम्ब्डा था, जो OPTIONSअनुरोध को संभालने और एक कॉर्ल हेडर के साथ जवाब देने के लिए समर्पित था , जैसे कि Access-Control-Allow-Originएक श्वेतसूची मिलान Origin

समाधान: एपीआई गेटवे HTTP / 2 कॉल के लिए सभी हेडर को लो-केस में बदलने के लिए लगता है, लेकिन HTTP / 1.1 के लिए कैपिटलाइज़ेशन को बनाए रखता है। इससे पहुंच event.headers.originविफल हो गई।

जांचें कि क्या आपके पास भी यह समस्या है:

मान लें कि आपका API स्थित है https://api.example.com, और आपका फ्रंट-एंड है https://www.example.com। CURL का उपयोग करके, HTTP / 2 का उपयोग करके एक अनुरोध करें:

curl -v -X OPTIONS -H 'Origin: https://www.example.com' https://api.example.com

प्रतिक्रिया आउटपुट में हेडर शामिल होना चाहिए:

< Access-Control-Allow-Origin: https://www.example.com

HTTP / 1.1 (या लोअरकेस Originहेडर के साथ) का उपयोग करके एक ही चरण को दोहराएं :

curl -v -X OPTIONS --http1.1 -H 'Origin: https://www.example.com' https://api.example.com

यदि Access-Control-Allow-Originहेडर गायब है, तो आप Originहेडर पढ़ते समय केस सेंसिटिविटी की जांच करना चाहते हैं ।


0

अन्य टिप्पणियों के अलावा, कुछ देखने के लिए स्थिति आपके अंतर्निहित एकीकरण से वापस आ गई है और यदि उस स्थिति के लिए Access-Control-Allow-Origin हेडर वापस आ गया है।

'सक्षम कॉर्स' वाली चीज़ करने से केवल 200 स्टेटस सेट होते हैं। यदि आपके पास समापन बिंदु पर अन्य लोग हैं, जैसे 4xx और 5xx, तो आपको हेडर को स्वयं जोड़ना होगा।


-2

मेरे मामले में, मैं केवल भ्रूण अनुरोध URL गलत लिख रहा था। पर serverless.yml, आप इसके लिए तैयार corsहैं true:

register-downloadable-client:
    handler: fetch-downloadable-client-data/register.register
    events:
      - http:
          path: register-downloadable-client
          method: post
          integration: lambda
          cors: true
          stage: ${self:custom.stage}

और फिर लैम्ब्डा हैंडलर पर आप हेडर भेजते हैं, लेकिन यदि आप सीमांत पर गलत अनुरोध करते हैं, तो आपको उस हेडर पर प्रतिक्रिया नहीं मिल रही है और आपको यह त्रुटि मिलने वाली है। इसलिए, सामने वाले पर अपना अनुरोध URL दोबारा जांचें।


-3

पायथन में आप इसे नीचे दिए गए कोड की तरह कर सकते हैं:

{ "statusCode" : 200,
'headers': 
    {'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': "*"
     },
"body": json.dumps(
    {
    "temperature" : tempArray,
    "time": timeArray
    })
 }
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.