এপিআই গেটওয়ে করস: কোনও 'অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন' শিরোনাম নেই


102

যদিও এপিআই গেটওয়ের মাধ্যমে সিওআরএস সেট আপ করা হয়েছে এবং শিরোনামটি সেট করা আছে Access-Control-Allow-Origin, ক্রোমের অভ্যন্তরে এজেএক্স থেকে এপিআই কল করার চেষ্টা করার সময় আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

এক্সএমএলএইচটিপিআরকুয়েস্ট http://XXXXX.execute-api.us-west-2.amazonaws.com/beta/YYYYY লোড করতে পারে না । অনুরোধকৃত উত্সটিতে কোনও 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনাম উপস্থিত নেই। মূল 'নাল' এর ফলে অ্যাক্সেসের অনুমতি নেই। প্রতিক্রিয়াটির HTTP স্থিতি কোড 403 ছিল।

আমি পোস্টম্যানের মাধ্যমে ইউআরএল পাওয়ার চেষ্টা করেছি এবং এটি দেখায় যে উপরের শিরোনামটি সফলভাবে পাস হয়েছে:

উত্তীর্ণ শিরোনাম

এবং অপশন থেকে পুনরায় বিবাদ:

প্রতিক্রিয়া শিরোনাম

আমি কীভাবে JSON-P এ না ফিরে ব্রাউজার থেকে আমার এপিআই কল করতে পারি?


আপনার কি এটি এস 3 এ সেট আপ আছে? যদি তাই হয়, আপনি আপ লাগাতে পারে Bucket Policy? আপনার নীতিতে পদ্ধতিটি রয়েছে তা নিশ্চিত করুন
iSkore

10
এপিআই গেটওয়ে টিম এখানে ... আপনি যদি কনসোলে 'সিওআর সক্ষম করুন' বৈশিষ্ট্যটি ব্যবহার করেন তবে কনফিগারেশনটি সঠিক হওয়া উচিত। আমার সেরা অনুমানটি হ'ল আপনি ব্রাউজারটি কার্যকর করছে এমন জাভাস্ক্রিপ্টে আপনার API এ সঠিক সংস্থান পথটি চালু করছেন না। যদি আপনি অস্তিত্বহীন পদ্ধতি / সংস্থান / পর্যায়ে কোনও এপিআই কল করার চেষ্টা করেন তবে আপনি কোনও সিওআরএস শিরোনাম সহ 403 জেনেরিক পাবেন। আমি দেখতে পাচ্ছি না যে পোস্টম্যানের অপশনস কলটিতে সমস্ত ডান সিআরএস শিরোলেখ রয়েছে বলে আপনি যদি সঠিক সংস্থানটি কল করে থাকেন তবে ব্রাউজার কীভাবে অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিনের শিরোনামটিকে মিস করতে পারে।
jackko

4
@ রায়ানজি-এডাব্লুএস ক্লায়েন্টটি অনুরোধটি স্বাক্ষর করছে না কারণ এপিআইটি ব্যবহারকারী-নির্দিষ্ট টোকেন ব্যবহার করে কল করা সংস্থানটি দ্বারা প্রমাণীকরণ করা হয়েছে, সুতরাং শংসাপত্রগুলি কোনও ফ্যাক্টর নয়। আমি সরাসরি ব্রাউজারে ইউআরএল গিয়ে এপিআই কল করতে পারি এবং আমি যথাযথ প্রতিক্রিয়া পাই।
টাইলার

4
@ মাকিনব্যাকন: আপনি কি এর সমাধান খুঁজে পেয়েছেন? আমি এখানে একই সমস্যাটি দিয়ে যাচ্ছি।
নির্মল

4
আমার পদ্ধতি এবং মঞ্চটি লাম্বদা দ্বারা স্বয়ংক্রিয়ভাবে উত্পন্ন হয়েছিল। আমি সত্যের পরে CORS সক্ষম করেছি। ওপি হিসাবে একই ত্রুটি। আমি অটো উত্পন্ন জিনিসগুলি উড়িয়ে দিয়েছি, একটি নতুন এপিআই এবং পদ্ধতি তৈরি করেছি, নতুন পর্যায়ে মোতায়েন করেছি এবং এটি দুর্দান্ত কাজ করেছে worked
পুড়ান

উত্তর:


117

আমি একই সমস্যা পেতে। আমি সন্ধানের জন্য 10 ঘন্টা ব্যবহার করেছি।

https://serverless.com/framework/docs/provider/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);
};

সমস্যাটিও ঠিক করেছিলাম যা আমারও ছিল। আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ!
এরিক ব্রাউন

আমি সার্ভারলেস ব্যবহার করি না, তবে এটি আমার সমস্যার সমাধান করে। অনুমান করুন যে আসল উত্স থেকে আপনাকে সেই শিরোলেখগুলি পাস করতে হবে।
কোস্টা

4
এফওয়াইআই, এখানে উপস্থাপিত উদাহরণ সহ একটি সমস্যা আছে। আপনার যদি "অ্যাক্সেস-কন্ট্রোল-অনুমোদন-শংসাপত্রগুলি" থাকে: সত্য, অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্সের জন্য আপনার কাছে ওয়াইল্ডকার্ড * থাকতে পারে না। এই নিয়মটি ব্রাউজার দ্বারা প্রয়োগ করা হয়। দেখুন এখানে এবং এখানে
কেভিন

4
এটি কাজ করছে না, আবার একই ত্রুটি দেখায় শিরোনামের ক্ষেত্রের জন্য অনুরোধ - অ্যাক্সেস-নিয়ন্ত্রণ-অনুমতি-শংসাপত্রগুলি অ্যাক্সেস-কন্ট্রোল-অনুমোদিত-শিরোনামগুলির দ্বারা প্রিফলাইট প্রতিক্রিয়াতে অনুমোদিত নয় allowed
mitesh7172

4
কৌতূহলী যে কারও জন্য, এখানে এটি উল্লেখ করা অফিসিয়াল ডক্স রয়েছে: ডামস.আও.স.মাজোন / অ্যাপিগেটওয়ে / স্লেট / ডেভেলপারগাইড / >> ল্যাম্বদা বা এইচটিটিপি প্রক্সি সংহতগুলির জন্য, আপনি এখনও এপিআই গেটওয়েতে প্রয়োজনীয়> বিকল্পগুলি প্রতিক্রিয়া শিরোনাম সেটআপ করতে পারেন। তবে অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স শিরোনামগুলি ফেরত দিতে আপনাকে অবশ্যই> পিছনের প্রান্তে নির্ভর করতে হবে কারণ প্রক্সি ইন্টিগ্রেশনের জন্য> ইন্টিগ্রেশন প্রতিক্রিয়া অক্ষম।
লিওনিড উসোভ

104

যদি অন্য কারও মধ্যে এটি চলছে তবে আমি আমার অ্যাপ্লিকেশনটির মূল কারণটি সন্ধান করতে সক্ষম হয়েছি।

আপনি যদি কাস্টম কর্তৃপক্ষের সাথে এপিআই-গেটওয়ে চালাচ্ছেন - এপিআই-গেটওয়ে এটি আসলে আপনার সার্ভারকে হিট করার আগে একটি 401 বা 403 ফেরত পাঠাবে। ডিফল্টরূপে - কোনও কাস্টম অথরাইজারের কাছ থেকে 4xx ফেরত দেওয়ার সময় API- গেটওয়ে CORS এর জন্য কনফিগার করা হয় না।

এছাড়াও - যদি আপনি এপিআই গেটওয়ের মধ্য দিয়ে চলমান কোনও অনুরোধের স্থিতি কোড পেয়ে থাকেন 0বা 1করেন তবে এটি সম্ভবত আপনার সমস্যা।

সংশোধন করতে - এপিআই গেটওয়ে কনফিগারেশনে - "গেটওয়ে রেসপন্স" এ যান, "ডিফল্ট 4 এক্সএক্স" প্রসারিত করুন এবং সেখানে একটি সিওআরএস কনফিগারেশন শিরোনাম যুক্ত করুন। অর্থাত্

Access-Control-Allow-Origin: '*'

আপনার গেটওয়েটি পুনরায় স্থাপনের বিষয়টি নিশ্চিত করুন - এবং ভয়েলা!


7
আমি তোমাকে ভালোবাসি. দু'দিন ধরে এ নিয়ে গুরুত্ব সহকারে কাজ করছি।
efong5

4
ডেস্কটপ AWS CLI সঙ্গে এই কাজ অনুপস্থিত তাদের জন্য, ব্যবহার করুন: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='"'"'*'"'"'
উইল

4
আমি কাস্টম কর্তৃপক্ষ ব্যবহার করছি না এবং এখনও আমার এটির প্রয়োজন ছিল কারণ আমার অনুরোধটিতে এতে খারাপ জেএসএন ছিল - ধন্যবাদ!
হিরো

9
আমার কাছে নোট করুন - পরে এপিআই মোতায়েন করতে ভুলবেন না :)
ড্যানিয়েল

4
আশ্চর্যের বিষয়, এটি আমার পক্ষে কাজ করেছে, তবে আমাকে পুনরায় চালনা করতে হবে না। আমি আগে পুনরায় চালনার চেষ্টা করেছি। কেন এটি আমার পক্ষে কাজ করেছে তা নিশ্চিত নয়।
মাইকেল

19

1) আমাকে @ রাইজার এবং অন্যান্য কিছু পরিবর্তনগুলির মতো করার দরকার ছিল his এটি আমার প্রতিক্রিয়া শিরোনাম:

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) এবং

এর পাশাপাশি, আমার এপিআই গেটওয়ে পোস্ট পদ্ধতিতে আমাকে 'এপিআই কী আবশ্যক' বিকল্পটি অক্ষম করা দরকার।


4
হ্যাঁ, আমি মনে করি আমাদের সূক্ষ্ম জিনিসটি প্রাথমিকভাবে অনেকটাই মিস হয় যে একবার আপনি "ল্যাম্বদা প্রক্সি ইন্টিগ্রেশন ব্যবহার করুন" দিয়ে ল্যাম্বডা ফাংশনটির জন্য আপনার এপিআই গেটওয়ে ইন্টিগ্রেশনটি কনফিগার করেছেন, তারপরে আপনি এবং অন্যরা বক্তব্য রাখছেন এবং শিরোনাম যুক্ত হয়েছে তা নিশ্চিত করার জন্য আপনাকে অবশ্যই প্রোগ্রামে আপনার ল্যাম্বদার প্রতিক্রিয়া। একটি এপিআই গেটওয়েতে "সিওআর সক্ষম করে" এবং এটি একটি অপশন প্রতিক্রিয়াকারী তৈরি করে তৈরি করা অটো-জেন স্টাফ দুর্দান্ত তবে আপনি যদি এপিআইয়ের মধ্যে সংহতকরণের অনুরোধে "লাম্বড্ডা প্রক্সি ইন্টিগ্রেশন ব্যবহার করুন" সেট করেন তবে সেখানে আপনি পুরোপুরি পাবেন না doesn't প্রবেশপথ.

4
এটি আমার পক্ষে কাজ করেছে ... ম্যানুয়ালটি সঠিকভাবে পড়ার পরে: গুরুত্বপূর্ণ প্রক্সি ইন্টিগ্রেশনে কোনও পদ্ধতিতে উপরোক্ত নির্দেশাবলী প্রয়োগ করার সময় কোনও প্রযোজ্য সিওআরএস শিরোনাম সেট করা হবে না। পরিবর্তে, আপনার ব্যাকএন্ডে অবশ্যই অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্সের মতো প্রযোজ্য সিওআরএস শিরোনামগুলি অবশ্যই ফেরত দিতে হবে। docs.aws.amazon.com/apigateway/latest/developerguide/…
বেনিহিলারিওস

14

আপনি যদি এই সমস্যাটির সাথে সম্পর্কিত সমস্ত কিছু উপকার না করে থাকেন তবে আমি যেখানে করেছি সেখানেই শেষ হয়ে যাবে। দেখা যাচ্ছে, অ্যামাজনের বিদ্যমান সিওআরএস সেটআপের দিকনির্দেশগুলি ঠিকঠাক কাজ করছে ... কেবলমাত্র নিশ্চিত হয়ে নিন যে আপনি পুনর্নির্মাণের কথা মনে করছেন ! CORS সম্পাদনা উইজার্ড এমনকি তার সমস্ত দুর্দান্ত ছোট সবুজ চেকমার্কগুলি সহ, আপনার এপিআইতে লাইভ আপডেট করে না। সম্ভবত সুস্পষ্ট, তবে এটি আমাকে অর্ধ দিনের জন্য আটকে রেখেছে।

এখানে চিত্র বর্ণনা লিখুন


ইহা ওইটাই ছিল. আক্ষরিকভাবে এটি নিয়ে দু'দিন কাজ করছেন। নিশ্চিত না যে আপনি গেটওয়েটি সম্পাদনা করার পরে যুক্তিটি কমপক্ষে কোনও পুনর্নির্মাণের অনুরোধ জানাবে না।
ক্রিস ক্রিস্টেনসেন

খুশি আপনি বুঝেছি মূর্ত আউট @ChrisChristensen - সবসময় কিছু এখনো মুক্তিদান অবিশ্বাস্যভাবে ভালো সমস্যা সম্পর্কে পরাজিত তাই
lase

এটিই উত্তর যা 2020-এ বৈধ Thanks ধন্যবাদ
রাহুল খান্না

পুনরায় ডিপ্লোয়
পুনরায়

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/ .." পথের খণ্ডের সাথেও পুরানো হতে পেরেছি। প্রায় এক সপ্তাহ আগে কখনও স্ক্র্যাপিংয়ের পরে, সিওআরএস বোতামটি হঠাৎ সঠিকভাবে কাজ করার কথা জানিয়েছে। এপিআই স্বয়ংক্রিয়ভাবে "ANY" পদ্ধতি তৈরি করেছে এবং সিআরএস বোতামটি স্বয়ংক্রিয়ভাবে "অপশন" পদ্ধতি তৈরি করেছে - আমি এপিআইতে কিছুই যুক্ত করি নি। উপরের "জিইটি" কাজ করে এবং এরপরে আমি একটি এজাক্স "পোস্ট" যুক্ত করেছি যা এপিআইয়ের স্পর্শ না করেও কাজ করে।
ম্যানিসি

আমি কীভাবে অ্যাক্সেস-কন্ট্রোল-অনুমোদন-অরিজিনকে অ্যাডাব্লুএস কনসোল ব্যবহার করে পদ্ধতির প্রতিক্রিয়াতে যুক্ত করা যায় তা নির্ধারণের চেষ্টা করার জন্য প্রায় দুই ঘন্টা ব্যয় করেছি, তবে এটি ছিল আমার পক্ষে কাজ করা একমাত্র জিনিস।
শ্ন_আন্ড্রয়েড_দেব

8

গুগলারের জন্য:

এখানে কেন:

  • সাধারণ অনুরোধ, বা GET/ POSTকোনও কুকিজ সহ প্রিফলাইট ট্রিগার করে না
  • আপনি যখন কোনও পাথের জন্য সিওআরএস কনফিগার করেন, এপিআই গেটওয়ে কেবল OPTIONSসেই পথেই একটি পদ্ধতি তৈরি করে, তারপরে Allow-Originব্যবহারকারী কল করার সময় মক প্রতিক্রিয়া ব্যবহার করে শিরোনাম প্রেরণ করে OPTIONSতবে GET/ স্বয়ংক্রিয়ভাবে POSTপাবেন নাAllow-Origin
  • আপনি যদি সিওআরএস মোডটি দিয়ে সাধারণ অনুরোধগুলি প্রেরণের চেষ্টা করেন তবে আপনি একটি ত্রুটি পাবেন কারণ সেই প্রতিক্রিয়ার কোনও Allow-Originশিরোনাম নেই
  • আপনি সর্বোত্তম অনুশীলনে মেনে চলতে পারেন, সাধারণ অনুরোধগুলি ব্যবহারকারীর প্রতিক্রিয়া প্রেরণ করা, প্রমাণীকরণ / কুকি সহ আপনার অনুরোধগুলিকে "সাধারণ নয়" করার জন্য প্রেরণ করা নয় এবং প্রিফলাইটটি ট্রিগার করবে
  • তবুও, নিম্নলিখিত অনুরোধের জন্য আপনাকে নিজের দ্বারা সিওআরএস শিরোনাম প্রেরণ করতে হবে OPTIONS

এটি যোগ করা:

  • কেবলমাত্র নির্দোষ OPTIONSহ'ল স্বয়ংক্রিয়ভাবে এপিআই গেটওয়ে তৈরি করা হবে
  • OPTIONSকোনও পাথের সিওআরএস সম্ভাবনা যাচাই করার জন্য কেবল সাবধানী ব্যবস্থা হিসাবে ব্রাউজার দ্বারা ব্যবহৃত হয়
  • সিওআরএস গ্রহণযোগ্য কিনা তা প্রকৃত পদ্ধতির উপর নির্ভর করে যেমন GET/POST
  • আপনার প্রতিক্রিয়াতে আপনাকে যথাযথ শিরোনাম পাঠাতে হবে

6

আমি আমার ল্যাম্বদা ফাংশন প্রতিক্রিয়াটিতে কেবল শিরোনাম যুক্ত করেছি এবং এটি একটি কবজির মতো কাজ করেছে

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

4

আমি এর মধ্যে একটি সহজ সমাধান খুঁজে পেয়েছি

এপিআই গেটওয়ে> আপনার এপিআই শেষ পয়েন্টটি নির্বাচন করুন> পদ্ধতিটি নির্বাচন করুন (আমার ক্ষেত্রে এটি পোস্ট ছিল)

এখন একটি ড্রপডাউন রয়েছে অ্যাকশনগুলি> সক্ষম করুন কর্স .. এটি নির্বাচন করুন।

এবার ড্রপডাউন অ্যাকশনগুলি আবার নির্বাচন করুন> এপিআই ডিপ্লয় করুন (এটি পুনরায় স্থাপন করুন)

এখানে চিত্র বর্ণনা লিখুন

এটা কাজ করেছে !


এই উত্তরটি কেন নিচে ভোট হয়েছে তবে নীচে অন্যান্য অনুরূপ উত্তর রয়েছে?
দীনেশ কুমার


3

আমি বুঝতে পেরেছিলাম যে ল্যাম্বডা অনুমোদনকারী ব্যর্থ হচ্ছে এবং কোনও অজানা কারণে যা একটি সিওআরএস ত্রুটিতে অনুবাদ করা হচ্ছে আমি তার কাজ শুরু করি। আমার লেখককে একটি সহজ ফিক্স (এবং কিছু লেখকের পরীক্ষা যা আমার প্রথম জায়গায় যুক্ত করা উচিত ছিল) এবং এটি কার্যকর হয়েছিল। আমার জন্য এপিআই গেটওয়ে অ্যাকশন 'CORS সক্ষম করুন' প্রয়োজনীয় ছিল। এটি আমার API এ আমার সমস্ত প্রয়োজনীয় শিরোনাম এবং অন্যান্য সেটিংস যুক্ত করেছে।


এবং পুনরায় স্থাপনা! :)
রবিন সি স্যামুয়েল

3

আমার জন্য, শেষ পর্যন্ত যে উত্তরটি কাজ করেছিল, সেটাই ছিল অ্যালেক্স আর এর উত্তর (দ্বিতীয় সর্বোচ্চ উত্সাহিত) থেকে জেমস শাপিরোর মন্তব্য। যোগাযোগের-পৃষ্ঠা পৃষ্ঠাটি প্রসেস করতে এবং ইমেল প্রেরণের জন্য লাম্বদা ব্যবহার করতে S3 এ হোস্ট করা একটি স্থিতিশীল ওয়েবপৃষ্ঠা পাওয়ার চেষ্টা করে আমি এই এপিআই গেটওয়ে সমস্যাটিতে প্রথম স্থান পেয়েছিলাম। কেবলমাত্র [] ডিফল্ট 4XX পরীক্ষা করে ত্রুটি বার্তা স্থির করা হয়েছে।

এখানে চিত্র বর্ণনা লিখুন


আপনি এই মেনুটি কোথায় পাবেন? আমি এটি কোথাও দেখতে পাচ্ছি না।
নিক এইচ

@ নিক রবি রামের ছবিটি দেখুন। "ক্রিয়াগুলি" এর অধীনে, "সক্ষম করস সক্ষম করুন" নামে একটি আইটেম থাকা উচিত এবং আপনি যখন এটি নির্বাচন করেন, মেনুটি প্রদর্শিত হবে।
জেসন

2

আপনার ফাংশন বা কোড পরিবর্তন করার পরে এই দুটি পদক্ষেপ অনুসরণ করুন।

প্রথমে CORS সক্ষম করুন তারপরে প্রতিবার এপিআই মোতায়েন করুন


এটার জন্য ধন্যবাদ. সংস্থানটিতে "CORS সক্ষম করুন" লক্ষ্য করেননি notice আমার মনকে হারাতে বসিয়েছে।
Shlomi Bazel

2

উভয়ের জন্য সিওআরএস সক্ষম করার পরে কোড স্থাপন করা POSTএবং OPTIONSআমার পক্ষে কাজ করা worked


4
আপনার অবদানের জন্য ধন্যবাদ তবে আপনি ব্যাখ্যা করতে পারেন কেন এটি আপনার পক্ষে কাজ করে? আমি আপনার উত্তরটি উন্নত করতে এই গাইডটি পড়তে আপনাকে আমন্ত্রণ জানাচ্ছি: "আমি কীভাবে একটি ভাল উত্তর লিখি" এখানে: stackoverflow.com/help/how-to-answer
গিলিয়াম রেমন্ড

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

আমার ক্ষেত্রে, যেহেতু আমি এডব্লিউএস_আইএএমকে এপিআই গেটওয়ের অনুমোদনের পদ্ধতি হিসাবে ব্যবহার করছিলাম, তাই শেষ পয়েন্টে আঘাত করার জন্য আমার আইএএম ভূমিকা অনুমতিগুলি প্রদান করা দরকার।


4
মানুষ আমি খুশি আমি এই মন্তব্যটি ছেড়ে। এটি আমার সাথে ঘটতে থাকে: ডি।
ক্যামহার্ট

আমি ভবিষ্যতের পুনঃব্যবস্থা সংক্রান্ত সমস্যার নিজস্ব সমাধান খুঁজে পেতে পছন্দ করি।
জ্যাক গিয়ারসন

0

এই সমস্যার আর একটি মূল কারণ HTTP / 1.1 এবং HTTP / 2 এর মধ্যে পার্থক্য হতে পারে।

লক্ষণ: কিছু ব্যবহারকারীর, তাদের সকলেরই নয়, আমাদের সফ্টওয়্যারটি ব্যবহার করার সময় কোনও সিওআরএস ত্রুটি পেয়েছিল।

সমস্যা: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। সিআরএল ব্যবহার করে, 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

অন্যের মন্তব্য ছাড়াও, আপনার অন্তর্নিহিত সংহতকরণ থেকে ফিরে আসা স্থিতি এবং যদি অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স শিরোনামটি সেই স্থিতির জন্য ফিরে আসে তবে সন্ধান করার মতো কিছু।

'সিএআরএস সক্ষম করুন' জিনিসটি করা মাত্র 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 টি দ্বিগুণ পরীক্ষা করুন double


-3

পাইথনে আপনি নীচের কোড হিসাবে এটি করতে পারেন:

{ "statusCode" : 200,
'headers': 
    {'Content-Type': 'application/json',
    'Access-Control-Allow-Origin': "*"
     },
"body": json.dumps(
    {
    "temperature" : tempArray,
    "time": timeArray
    })
 }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.