ক্রোম এস 3 ক্লাউডফ্রন্ট: প্রাথমিক এক্সএইচআর অনুরোধে কোনও 'অ্যাক্সেস-কন্ট্রোল-অরিজিন-অরিজিন' শিরোনাম নেই


30

আমার একটি ওয়েবপৃষ্ঠা রয়েছে ( https://smartystishes.com/contact ) যা ক্লাউডফ্রন্ট সিডিএন এর মাধ্যমে এস 3 থেকে কিছু এসভিজি ফাইল লোড করতে jQuery ব্যবহার করে।

ক্রোমে আমি কনসোলের পাশাপাশি একটি ছদ্মবেশ উইন্ডোও খুলব। তারপরে পৃষ্ঠাটি লোড করব। পৃষ্ঠাটি লোড হওয়ার সাথে সাথে আমি কনসোলে সাধারণত 6 থেকে 8 টি বার্তা পাব যা এর সাথে সাদৃশ্যযুক্ত:

XMLHttpRequest cannot load 
https://d79i1fxsrar4t.cloudfront.net/assets/img/feature-icons/documentation.08e71af6.svg.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'https://smartystreets.com' is therefore not allowed access.

আমি যদি পৃষ্ঠার একটি মানক পুনরায় লোড করি, এমনকি একাধিক সময়, আমি একই ত্রুটিগুলি পেতে থাকি। আমি যদি Command+Shift+Rবেশিরভাগ ক্ষেত্রে এবং কখনও কখনও সমস্ত কিছু করতে পারি তবে XMLHttpRequestত্রুটি ছাড়াই চিত্রগুলি লোড হবে ।

কখনও কখনও চিত্রগুলি লোড হওয়ার পরেও আমি রিফ্রেশ করব এবং এক বা একাধিক চিত্র লোড হবে না এবং সেই XMLHttpRequestত্রুটিটি আবার ফিরে আসবে।

আমি এস 3 এবং ক্লাউডফ্রন্টের সেটিংসটি চেক করেছি, পরিবর্তন করেছি এবং পুনরায় পরীক্ষা করেছি। এস 3-তে আমার সিওআরএস কনফিগারেশনটি দেখতে এমন দেখাচ্ছে:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>*</AllowedOrigin>
    <AllowedOrigin>http://*</AllowedOrigin>
    <AllowedOrigin>https://*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

(দ্রষ্টব্য: প্রথমদিকে কেবল <AllowedOrigin>*</AllowedOrigin>একই সমস্যা ছিল ))

CloudFront সালে বন্টন আচরণ HTTP- র পদ্ধতি অনুমতি সেট করা হয়: GET, HEAD, OPTIONS। ক্যাশেড পদ্ধতিগুলি একই। ফরোয়ার্ড শিরোনামগুলি "শ্বেত তালিকাতে" সেট করা আছে এবং সেই শ্বেত তালিকায় অন্তর্ভুক্ত রয়েছে, "অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-শিরোনাম, অ্যাক্সেস-নিয়ন্ত্রণ-অনুরোধ-পদ্ধতি, উত্স"।

ক্যাশে-কম ব্রাউজার পুনরায় লোড করার পরে এটি কাজ করে এমনটি মনে হয় যে S3 / ক্লাউডফ্রন্টের পক্ষে সবকিছু ঠিক আছে, অন্যথায় কেন সামগ্রী বিতরণ করা হবে। তবে তারপরে কেন সামগ্রীটি প্রাথমিক পৃষ্ঠা-ভিউতে সরবরাহ করা হবে না?

আমি ম্যাকোজে গুগল ক্রোমে কাজ করছি। ফায়ারফক্সের প্রতিবার ফাইলগুলি পেতে কোনও সমস্যা নেই। অপেরা কখনই ফাইলগুলি পায় না। সাফারি বিভিন্ন রিফ্রেশের পরে চিত্রগুলি তুলবে।

ব্যবহার করে curlআমি কোনও সমস্যা পাই না:

curl -I -H 'Origin: smartystreets.com' https://d79i1fxsrar4t.cloudfront.net/assets/img/phone-icon-outline.dc7e4079.svg

HTTP/1.1 200 OK
Content-Type: image/svg+xml
Content-Length: 508
Connection: keep-alive
Date: Tue, 20 Jun 2017 17:35:57 GMT
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET
Access-Control-Max-Age: 3000
Last-Modified: Thu, 15 Jun 2017 16:02:19 GMT
ETag: "dc7e4079f937e83291f2174853adb564"
Cache-Control: max-age=31536000
Expires: Wed, 01 Jan 2020 23:59:59 GMT
Accept-Ranges: bytes
Server: AmazonS3
Vary: Origin,Access-Control-Request-Headers,Access-Control-Request-Method
Age: 4373
X-Cache: Hit from cloudfront
Via: 1.1 09fc52f58485a5da8e63d1ea27596895.cloudfront.net (CloudFront)
X-Amz-Cf-Id: wxn_m9meR6yPoyyvj1R7x83pBDPJy1nT7kdMv1aMwXVtHCunT9OC9g==

কেউ কেউ পরামর্শ দিয়েছেন যে আমি ক্লাউডফ্রন্ট বিতরণ মুছুন এবং এটিকে পুনরায় তৈরি করুন। একটি বরং কঠোর এবং অসুবিধার সমাধানের মতো মনে হচ্ছে।

কী কারণে এই সমস্যা হচ্ছে?

হালনাগাদ:

লোড করতে ব্যর্থ কোনও চিত্র থেকে প্রতিক্রিয়া শিরোনাম যুক্ত করা হচ্ছে।

age:1709
cache-control:max-age=31536000
content-encoding:gzip
content-type:image/svg+xml
date:Tue, 20 Jun 2017 17:27:17 GMT
expires:2020-01-01T23:59:59.999Z
last-modified:Tue, 11 Apr 2017 18:17:41 GMT
server:AmazonS3
status:200
vary:Accept-Encoding
via:1.1 022c901b294fedd7074704d46fce9819.cloudfront.net (CloudFront)
x-amz-cf-id:i0PfeopzJdwhPAKoHpbCTUj1JOMXv4TaBgo7wrQ3TW9Kq_4Bx0k_pQ==
x-cache:Hit from cloudfront

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

@ মাইকেল-স্ক্লবট, আমি আশা করি আপনি ইউআরএল ( স্মার্টস্ট্রিটস / কনট্যাক্ট ) পরিদর্শন করবেন এবং আপনার মেশিনেও একই ঘটনা ঘটছে কিনা তা আশা করি। :) ত্রুটিগুলি সম্পর্কে মজার বিষয় হ'ল কনসোলে ত্রুটিটি বাদ দিয়ে ব্রাউজার 200 এর স্থিতি জানিয়েছে যে এটি "(ডিস্ক ক্যাশে থেকে)" চিত্রটি ব্যবহার করছে, যা ছদ্মবেশী, I দিয়ে সম্ভব নয় should চিন্তা। এমনকি আমি স্থানীয় ক্যাশে সাফ করার পরেও।
সানস্পার্ক

1
হ্যাঁ, লোকেরা প্রায়শই ডোমেইন নামগুলি "মেক আপ" করে (যেগুলি সত্যিকারের সাইট হতে পারে, তবে প্রশ্নে থাকা সাইট নয়) যা আমি প্রাথমিকভাবে বুঝতে পারি নি যে আপনি আপনার সাইটে প্রকৃত, সঠিক লিঙ্কটি দিয়েছিলেন। তার জন্য ধন্যবাদ, আপনি আমার অনুরোধ উপেক্ষা করতে পারেন। আমি সমস্যার সদৃশ করতে পারি এটি একটি ক্লায়েন্ট পাশ ইস্যু মত মনে হচ্ছে। আমি একটি তত্ত্ব পিছনে তাড়া করছি।
মাইকেল - স্কলবট

আমি মনে করি এটি ক্লায়েন্ট-সাইড ইস্যু হওয়ার বিষয়ে আপনি সঠিক হতে পারেন। চিত্রগুলি এইচটিএমএলে একটি ট্যাগের সাথে সংযুক্ত এবং তারপরে দেখে মনে হচ্ছে এগুলি আবার jQuery এ অনুরোধ করা হয়েছে। সম্ভবত ত্রুটিটি একটি কল থেকে এবং 200 অন্য কলকের।
সানস্পার্ক

1
বিষয়টি আমি বিশ্বাস করি ঠিক তাই। ক্রোম এবং এস 3 এমনভাবে ইন্টারঅ্যাক্ট করছে যা একটি সিওআরএস অনুরোধ ভঙ্গ করে যা একই বস্তুর জন্য একটি নন-সিওআর অনুরোধ অনুসরণ করে। যুক্তিযুক্তভাবে, তারা উভয়ই ভুল ... তবে তর্কযোগ্যভাবে, উভয়ই ভুল নয়। আমি মনে করি না আপনি বিভিন্ন কী দিয়ে অবজেক্টের দুটি অনুলিপি সংরক্ষণ না করে ... বা দুটি পৃথক ক্লাউডফ্রন্ট বিতরণ (বিভিন্ন হোস্টনাম) ব্যবহার না করে যাতে আপনি কোনও সিওআরএস এবং নন-সিআরএস অনুরোধ না করেন তা ঠিক করতে পারেন I আমি চাইলে কীভাবে এই উপসংহারে পৌঁছে যাচ্ছি তার বিবরণ সহ আমি এটি লিখব you
মাইকেল - স্কেলবট

উত্তর:


55

আপনি একই বস্তুর জন্য দুটি অনুরোধ করছেন, একটি HTML থেকে, একটি এক্সএইচআর থেকে। দ্বিতীয়টি ব্যর্থ হয়, কারণ ক্রোম প্রথম অনুরোধ থেকে ক্যাশেড প্রতিক্রিয়া ব্যবহার করে, যার কোনও Access-Control-Allow-Originপ্রতিক্রিয়া শিরোনাম নেই।

কেন?

ক্রোমিয়াম বাগ 409090 নিয়মিত অনুরোধ ক্যাশে যাওয়ার পরে ক্যাশে থেকে ক্রস-উত্সের অনুরোধ এই সমস্যার বর্ণনা দেয় এবং এটি একটি "ঠিক করবে না" - তারা বিশ্বাস করে যে তাদের আচরণটি সঠিক is ক্রোম ক্যাশেড প্রতিক্রিয়াটিকে ব্যবহারযোগ্য হিসাবে বিবেচনা করে, দৃশ্যত কারণ প্রতিক্রিয়াটিতে একটি Vary: Originশিরোলেখ অন্তর্ভুক্ত করা হয়নি ।

অনুরোধ শিরোনাম Vary: Originছাড়াই কোনও বস্তুর অনুরোধ করা Origin:হলেও, বালতিতে সিওআরএস কনফিগার করা থাকলেও এস 3 ফিরে আসে না । Vary: Originকেবল তখনই পাঠানো হয় যখন কোনও Originশিরোনাম অনুরোধে উপস্থিত থাকে।

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

ক্লাউডফ্রন্ট একটি পাস পেয়েছে, কারণ এস 3 এর আরও সঠিক হলে এর প্রতিক্রিয়াটি সঠিক হবে, যেহেতু ক্লাউডফ্রন্ট এস 3 সরবরাহ করে যখন এটি ফেরত দেয়।

এস 3, একটু ফজিয়ার এটা ভুল ফিরে যাওয়ার Vary: Some-Headerযখন কোনো ছিল Some-Headerঅনুরোধে।

উদাহরণস্বরূপ, একটি প্রতিক্রিয়া যা এতে রয়েছে

Vary: accept-encoding, accept-language

ইঙ্গিত দেয় যে উত্সের সার্ভারটি এই প্রতিক্রিয়াটির জন্য সামগ্রীটি বেছে নেওয়ার সময় নির্ধারণের কারণ হিসাবে অনুরোধের ক্ষেত্র Accept-Encodingএবং Accept-Languageক্ষেত্রগুলি (বা এর অভাব) ব্যবহার করেছে। (সামনে জোর দাও)

https://tools.ietf.org/html/rfc7231#section-7.1.4

স্পষ্টতই, Vary: Some-Absent-Headerবৈধ, সুতরাং S3 Vary: Originএটির প্রতিক্রিয়াতে যুক্ত হলে সিআরএস কনফিগার করা থাকলে এটি সঠিক হবে , যেহেতু সত্যই প্রতিক্রিয়াটি পরিবর্তিত হতে পারে।

এবং, স্পষ্টতই, এটি ক্রোমকে সঠিক জিনিস করতে বাধ্য করবে। অথবা, যদি এটি এই ক্ষেত্রে সঠিক জিনিস না করে তবে এটি একটি লঙ্ঘন করা হবে MUST NOT। একই বিভাগ থেকে:

একটি উত্স সার্ভার Varyদুটি উদ্দেশ্যে ক্ষেত্রের তালিকা সহ প্রেরণ করতে পারে :

  1. ক্যাশে প্রাপকদের অবহিত করতে যে তারা MUST NOTপরবর্তী অনুরোধটি মূল অনুরোধের মতো তালিকাভুক্ত ক্ষেত্রগুলির জন্য একই মান ([আরএফসি 7234] এর বিভাগ 4.1) না থাকলে তারা পরবর্তী প্রতিক্রিয়া সন্তুষ্ট করতে এই প্রতিক্রিয়াটি ব্যবহার করে। অন্য কথায়, ভ্যারি স্টোর করা ক্যাশে প্রবেশের নতুন অনুরোধের সাথে মেলে প্রয়োজনীয় ক্যাশে কীটি প্রসারিত করে।

...

সুতরাং, এস 3 সত্যিই SHOULDফিরে আসবে Vary: Originযখন বালতিতে সিওআরএস কনফিগার করা Originথাকে , যদি অনুরোধ থেকে অনুপস্থিত থাকে তবে তা হয় না।

তবুও, এস 3 হেডারটি না ফেরানোর জন্য কঠোরভাবে ভুল নয়, কারণ এটি কেবল একটি SHOULD, একটি নয় MUST। আবার, আরএফসি -7231 এর একই বিভাগ থেকে:

SHOULDযখন একটি উপস্থাপনা বাছাই করার জন্য এর অ্যালগরিদম পদ্ধতি এবং অনুরোধ লক্ষ্য ব্যতীত অনুরোধ বার্তার দিকগুলির উপর ভিত্তি করে পরিবর্তিত হয় তখন একটি উত্স সার্ভার একটি ভেরি শিরোনাম ক্ষেত্র প্রেরণ করে ...

অন্যদিকে, যুক্তিটি তৈরি করা যেতে পারে যে ক্রোমের স্পষ্টতই জানা উচিত যে Originশিরোনাম পরিবর্তিত করা একটি ক্যাশে কী হওয়া উচিত কারণ এটি একইভাবে Authorizationপ্রতিক্রিয়া পরিবর্তন করতে পারে প্রতিক্রিয়া পরিবর্তন করতে পারে।

... যতক্ষণ না ভেরিয়েন্সটি অতিক্রম করা যায় না বা ক্যাশের স্বচ্ছতা রোধ করতে মূল সার্ভারটি ইচ্ছাকৃতভাবে কনফিগার করা হয়নি। উদাহরণস্বরূপ, Authorizationক্ষেত্রের নামটি এখানে পাঠানোর দরকার নেই Varyকারণ ব্যবহারকারীদের জুড়ে পুনরায় ব্যবহার করা ক্ষেত্রের সংজ্ঞা দ্বারা সীমাবদ্ধ [...]

একইভাবে, উত্স জুড়ে পুনঃব্যবহার তর্কযোগ্যভাবে প্রকৃতির দ্বারা সীমাবদ্ধ Originতবে এই যুক্তিটি শক্তিশালী নয়।


tl; dr: বাস্তবায়নের অদ্ভুততার কারণে আপনি স্পষ্টতই এইচটিএমএল থেকে কোনও অবজেক্ট আনতে পারবেন না এবং তারপরে ক্রম এবং এস 3 (ক্লাউডফ্রন্টের সাথে বা ছাড়াই) এর সাথে একটি সিওআরএস অনুরোধ হিসাবে সফলভাবে এটি আবার আনতে পারবেন না।


কার্যসংক্রান্ত:

এই আচরণটি ক্লাউডফ্রন্ট এবং ল্যাম্বদা @ এজ দিয়ে কাজ করা যেতে পারে, নিম্নলিখিত কোডটিকে একটি অরিজিন রেসপন্স ট্রিগার হিসাবে ব্যবহার করে।

এটি Vary: Access-Control-Request-Headers, Access-Control-Request-Method, OriginS3 এর যে কোনও প্রতিক্রিয়ায় কোনও Varyশিরোনাম যুক্ত করে। অন্যথায়, Varyপ্রতিক্রিয়াতে শিরোলেখ সংশোধন করা হয় না।

'use strict';

// If the response lacks a Vary: header, fix it in a CloudFront Origin Response trigger.

exports.handler = (event, context, callback) => {
    const response = event.Records[0].cf.response;
    const headers = response.headers;

    if (!headers['vary'])
    {
        headers['vary'] = [
            { key: 'Vary', value: 'Access-Control-Request-Headers' },
            { key: 'Vary', value: 'Access-Control-Request-Method' },
            { key: 'Vary', value: 'Origin' },
        ];
    }
    callback(null, response);
};

বৈশিষ্ট্য: আমি এইডাব্লুএস সমর্থন ফোরামগুলিতে মূল পোস্টটির লেখকও যেখানে এই কোডটি প্রাথমিকভাবে ভাগ করা হয়েছিল।


উপরের ল্যাম্বদা @ এজ সমাধানটি পুরোপুরি সঠিক আচরণের ফলাফল দেয় তবে আপনার দুটি নির্দিষ্ট প্রয়োজনীয়তার উপর নির্ভর করে আপনি এখানে দুটি বিকল্প কার্যকর করতে পারেন যা দরকারী হতে পারে:

বিকল্প / হ্যাকারাউন্ড # 1: ক্লাউডফ্রন্টের সিওআরএস শিরোনাম জাল করুন।

ক্লাউডফ্রন্ট প্রতিটি অনুরোধে যুক্ত করা কাস্টম শিরোলেখকে সমর্থন করে। যদি আপনি Origin:প্রতিটি অনুরোধ, এমনকি যেগুলি ক্রস-উত্স নয়, সেট করে তবে এটি এস 3-তে সঠিক আচরণ সক্ষম করবে। কনফিগারেশন বিকল্পটিকে কাস্টম অরিজিন শিরোনাম বলা হয়, যার অর্থ "উত্স" শব্দের অর্থ সিওআরএসের অর্থের চেয়ে সম্পূর্ণ ভিন্ন। ক্লাউডফ্রন্টে এর মতো একটি কাস্টম শিরোলেখ কনফিগার করা অনুরোধে যা পাঠানো হয়েছে তা নির্দিষ্ট মানের সাথে ওভাররাইট করে বা অনুপস্থিত থাকলে এটিকে যুক্ত করে। আপনি যদি ঠিক এক উৎপত্তি XHR, যেমন উপর আপনার বিষয়বস্তু অ্যাক্সেস https://example.com, আপনি যে যোগ করতে পারেন। ব্যবহার *সন্দেহজনক, তবে অন্যান্য পরিস্থিতিতে কাজ করতে পারে। এর প্রভাবগুলি সাবধানতার সাথে বিবেচনা করুন।

বিকল্প / হ্যাকারাউন্ড # 2: একটি "ডামি" ক্যোয়ারী স্ট্রিং প্যারামিটার ব্যবহার করুন যা এইচটিএমএল এবং এক্সএইচআর থেকে পৃথক বা এক বা অন্যটির থেকে অনুপস্থিত। এই পরামিতিগুলির নাম সাধারণত দেওয়া থাকে x-*তবে হওয়া উচিত নয় x-amz-*

যাক আপনি নামটি তৈরি করুন x-request। তাই <img src="https://dzczcexample.cloudfront.net/image.png?x-request=html">। জেএস থেকে অবজেক্ট অ্যাক্সেস করার সময়, কোয়েরি প্যারামিটার যুক্ত করবেন না। Originক্যাশে কী এর অংশ হিসাবে শিরোনাম বা অনুপস্থিতির সাহায্যে অবজেক্টগুলির বিভিন্ন সংস্করণ ক্যাশে করে ক্লাউডফ্রন্ট ইতিমধ্যে সঠিক কাজ করছে কারণ আপনি সেই শিরোনামটিকে আপনার ক্যাশে আচরণে ফরোয়ার্ড করেছেন। সমস্যাটি হ'ল, আপনার ব্রাউজারটি এটি জানে না। এটি ব্রাউজারকে নিশ্চিত করে যে এটি আসলে একটি পৃথক বস্তু যা একটি CORS প্রসঙ্গে আবার অনুরোধ করা দরকার।

আপনি যদি এই বিকল্প পরামর্শগুলি ব্যবহার করেন তবে একটি বা অন্যটি ব্যবহার করুন - উভয়ই নয়।


5
আপনার প্রতিক্রিয়া একটি জীবনকাল, দুর্দান্ত উত্তর। আপনি আমাকে কিছু মারাত্মক সময় বাঁচিয়েছেন।
মিটিউট

হাই, আমি আমার এস 3 এর জন্য ক্লাউডফ্রন্ট ব্যবহার করব না যাতে এই কর্মপরিকল্পনা সাহায্য করছে না, আমি কি আরও কিছু করতে পারি?
জেফিন

1
উপরে জেফিন, বিকল্প # 2 ক্লাউডফ্রন্ট ছাড়াই একা এস 3 এর জন্য কাজ করবে। একটি স্বেচ্ছাসেবী ?x-some-key=some-valueক্যোয়ারী স্ট্রিং প্যারামিটার যুক্ত করা ব্রাউজারকে নিশ্চিত করবে যে অনুরোধটি আলাদা is
মাইকেল - স্কলবট

1
@ মাইকেল-স্কেলবোট: হ্যাঁ, মনোহর মত কাজ করেছে
জেফিন

1
@ লিওনেল হ্যাঁ, এটি সঠিক দেখাচ্ছে।
মাইকেল - sqlbot

1

আপনি কেন বিভিন্ন ব্রাউজারের থেকে এই জাতীয় ফলাফল পেয়ে যাবেন তা আমি জানি না, তবে:

এক্স-এমজেড-সিএফ-আইডি: wxn_m9meR6yPoyyvj1R7x83pBDPJy1nT7kdMv1aMwXVtHCunT9OC9g ==

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


ধন্যবাদ, আমি দেখব যে আমি এডাব্লুএস ফোরামে কোনও প্রতিক্রিয়া পেতে পারি কিনা।
সানস্পার্ক

1
বিকাশকারী সহায়তার জন্য আপনাকে $ 29 দিতে হবে। এটি কোনও ব্যবসায়ের জন্য একটি তুচ্ছ পরিমাণ অর্থ, একজন ব্যক্তির কত সময় খরচ হয় তা প্রদত্ত।
টিম

1
@ টিম, নোট করুন যে বিকাশকারী সমর্থন কেবল 29 ডলার নয়। এটাই বেস প্রাইস। যদি আপনার মাসিক AWS বিলের 3%> = $ 29 হয় তবে আপনি বেসের পরিবর্তে 3% প্রদান করুন pay
মাইকেল - স্ক্যালবট

ধন্যবাদ @ মাইকেল-স্ক্লবট, আমি এটি বুঝতে পারি নি। আমি জানি আপনার কাছে সংরক্ষিত দৃষ্টান্তগুলির মতো জিনিসগুলি থাকলে দামের দাম দ্রুত বাড়তে পারে তবে যখন আপনার প্রচুর সংস্থান থাকে তখন আমি কখনই বিকাশকারী দামের দিকে লক্ষ্য করি না।
টিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.