ফায়ারবেস স্টোরেজ এবং অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স


90

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

  (let [xhr (js/XMLHttpRequest.)]
    (.open xhr "GET" url)
    (aset xhr "responseType" "arraybuffer")
    (aset xhr "onload" #(js/console.log "bin" (.-response xhr)))
    (.send xhr)))

ক্রোম ত্রুটি বার্তা:

এক্সএমএলএইচটিপিআরকোয়েস্ট https://firebasestorage.googleapis.com/usedEDITED টি লোড করতে পারে না ] অনুরোধকৃত উত্সটিতে কোনও 'অ্যাক্সেস-নিয়ন্ত্রণ-নিয়ন্ত্রণ-অনুমতি দিন' শিরোনাম উপস্থিত নেই। উত্স ' http: // লোকালহোস্ট: 3449 ' তাই অ্যাক্সেসের অনুমতি নেই।


4
একটি মন্তব্যের জন্য যথেষ্ট প্রতিনিধি নয়, তবে উপরের উপায়টি এখনও সঠিক উপায়ে। : শুধু এই এক কর্মকর্তা firebase ডক্স শেয়ার করতে চেয়েছিলেন firebase.google.com/docs/storage/web/...
অ্যান্ড্রু McOlash

উত্তর:


179

ফায়ারবেস-টক গ্রুপ / তালিকার এই পোস্টটি থেকে :

সিওআরএস-এর জন্য আপনার ডেটা কনফিগার করার সহজতম উপায় হ'ল gsutilকমান্ড লাইন সরঞ্জাম। এর জন্য ইনস্টলেশন নির্দেশাবলী https://cloud.google.com/storage/docs/gsutil_installgsutil এ উপলব্ধ । একবার এটির সাথে ইনস্টল ও প্রমাণীকরণ হয়ে গেলে আপনি এটি সিওআর কনফিগার করতে ব্যবহার করতে পারেন।gsutil

উদাহরণস্বরূপ, আপনি যদি কেবল নিজের কাস্টম ডোমেন থেকে অবজেক্ট ডাউনলোডের অনুমতি দিতে চান তবে এই ডেটাটি cors.json নামক একটি ফাইলে রাখুন ( "https://example.com"আপনার ডোমেনের পরিবর্তে ):

[
  {
    "origin": ["https://example.com"],
    "method": ["GET"],
    "maxAgeSeconds": 3600
  }
]

তারপরে, এই কমান্ডটি চালান ( "exampleproject.appspot.com"আপনার বালতির নামের পরিবর্তে ):

gsutil cors set cors.json gs://exampleproject.appspot.com

এবং আপনি সেট করা উচিত।

আপনার যদি আরও জটিল সিওআরএস কনফিগারেশন প্রয়োজন হয় তবে https://cloud.google.com/storage/docs/cross-origin#Configuring-CORS-on-a- বালতিতে ডক্সটি দেখুন ।


4
অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্সের মতো সমস্ত উত্সকে মঞ্জুরি দেওয়ার কোনও উপায় আছে: *?
ডুডারসন

4
আমার ফায়ারবেস বালতির সঠিক নামটি কীভাবে খুঁজে পাব?
জিম

11
@ ব্যবহারকারী 1311069 এর "origin": ["*"],পরিবর্তে কেবল ব্যবহার করুন"origin": ["https://example.com"],
ডিসেম্বর 17:40 এ রিডডনমর

8
ফায়ারবেসকে এটি করার জন্য কোনও ব্যবহারকারী বান্ধব উপায়টি খুঁজে বের করতে হবে। প্রকৃত ফায়ারবেস ডাটাবেসে অনুমতি সেট করা প্রায় হতাশার মতো নয় বা এস 3 বাল্টের অনুমতি নির্ধারণ করে না। এই সময়ে এস 3 এর পক্ষে দৃ at় অগ্রাধিকার।
ম্যাট জেনসেন

44
আপনি util ইনস্টল করতে না চান তাহলে, একটি সুবিধাজনক উপায় যেতে হয় console.cloud.google.com/home এবং উপরের ডানদিকে "সক্রিয় করুন Google মেঘ শেল" ক্লিক করুন। এটি ইতিমধ্যে ইনস্টল করা জসুইট সহ এবং আপনার ফায়ারবেস স্টোরেজ প্রকল্পগুলিতে অ্যাক্সেস সহ একটি শেল খুলবে। (শেলটিতে আমি gsutil cors set myjson.json gs://projectname.appspot.com
জসন

62

এই প্রক্রিয়াটিকে আরও সহজ করার জন্য গুগল ক্লাউডের এখন একটি ইনলাইন সম্পাদক রয়েছে। আপনার স্থানীয় সিস্টেমে কিছু ইনস্টল করার দরকার নেই।

  1. জিসিপি কনসোলটি খুলুন এবং ক্লিক করে ক্লাউড টার্মিনাল সেশন শুরু করুন>_ আইকন বোতামটি ।
  2. সম্পাদকটি খোলার জন্য পেন্সিল আইকনটি ক্লিক করুন, তারপরে তৈরি করুন cors.json ফাইলটি করুন।
  3. চালান gsutil cors set cors.json gs://your-bucket

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


ধাপে আটকে যান। অনুগ্রহ করে ব্যাখ্যা করুন "এবং একটি ক্লাউড টার্মিনাল সেশন শুরু করুন" আমি কনসোলটি খুলি এবং কোনও বোতাম দেখতে পাচ্ছি না বা "ক্লাউড টার্মিনাল সেশন শুরু করতে" লিঙ্ক করব
fortesl

4
এটি দেখতে ডানদিকের উপরের ডানদিকে আইকন >_
এনভির

যদি প্রয়োজন হয় তবে বিবর্তনের জন্য বিদ্যমান কর্স কনফিগারেশনটিকে প্রথমে টানানোর জন্য কি সরল পথ রয়েছে?
ডেভিড

চালাকি করলেন! ধন্যবাদ. আমার অবশ্যই বলতে হবে, নিয়ম অনুসারে যদি এটি ফায়ারবেস স্টোরেজ থেকে নিজেই নিয়ন্ত্রিত হয় তবে এটি এত সহজ হতে পারে ?! #google #firebase ব্যবহারকারীর অভিজ্ঞতা বাড়ানোর জন্য এখানে একটি সুযোগ রয়েছে।
রডরিগো রুবিও

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

18

শুধু উত্তর যুক্ত করতে চান। গুগল কনসোলে আপনার কনসোলে (কনসোল.cloud.google.com/home) কেবলমাত্র আপনার প্রকল্পে যান এবং আপনার প্রকল্পটি নির্বাচন করুন। সেখানে টার্মিনালটি খুলুন এবং কেবল cors.json ফাইল তৈরি করুন ( touch cors.json) এবং তারপরে উত্তরটি অনুসরণ করুন এবং এই ফাইলটি সম্পাদনা করুন (vim cors.json @ ফ্র্যাঙ্ক-ভ্যান-পফেলেনের পরামর্শ অনুসারে )

এটি আমার পক্ষে কাজ করেছে। চিয়ার্স!


কনসোল.cloud.google.com/home এ ওয়েব কনসোলটি আমাকে একটি ত্রুটি দিচ্ছিল, তবে গুগল ক্লাউড এসডিকে শেলটির সাথে দুর্দান্ত কাজ করেছে।
ফায়ারিংব্ল্যাঙ্কস

4
... সেখানে টার্মিনালটি খুলুন এবং ... আপনি টার্মিনালটি কীভাবে খুলবেন? আমি লিঙ্কটিতে কোনও "ওপেন টার্মিনাল" বোতামটি দেখতে পাচ্ছি না
fortesl

4
আপনি cloudসাবডোমেনে রয়েছেন তা নিশ্চিত করুন , firebase("কনসোল.cloud.google.com/home") নয় এবং >_উপরের ডানদিকে আইকন বোতামটি সন্ধান করুন।
ক্রিস ভিলা

1

এটি করার জন্য অন্য একটি পদ্ধতি হ'ল গুগল জেএসএন এপিআই ব্যবহার করা। পদক্ষেপ 1: JSON API এর সাথে ব্যবহারের জন্য অ্যাক্সেস টোকন পান একটি টোকেন ব্যবহার পেতে এখানে যান: https://developers.google.com/oauthplayground/ তারপরে JSON এপিআই বা স্টোরেজ প্রয়োজনীয় বিকল্পগুলি নির্বাচন করুন যেমন পড়ুন, লিখুন, পূর্ণ_অ্যাক্সেস (সেগুলিকে টিক দিন) যা প্রয়োজনীয়) অ্যাক্সেস টোকেন পেতে প্রক্রিয়াটি অনুসরণ করুন, যা এক ঘন্টার জন্য বৈধ হবে। পদক্ষেপ 2: সিওআর আপডেট করতে গুগল জেএসএন এপিআইতে টোকেন ব্যবহার করুন

নমুনা কার্ল:

    curl -X PATCH \
  'https://www.googleapis.com/storage/v1/b/your_bucket_id?fields=cors' \
  -H 'Accept: application/json' \
  -H 'Accept-Encoding: gzip, deflate' \
  -H 'Authorization: Bearer ya29.GltIB3rTqQ2tJgh0cMj1SEa1UgQNJnTMXUjMlMIRGG-mBCbiUO0wqdDuEpnPD6cbkcr1CuLItuhaNCTJYhv2ZKjK7yqyIHNgkCBup-T8Z1B1RiBrCgcgliHOGFDz' \
  -H 'Content-Type: application/json' \
  -H 'Postman-Token: d19f29ed-2e80-4c34-85ee-c46c9058fac0' \
  -H 'cache-control: no-cache' \
  -d '{
  "location": "us",
  "storageClass": "Standard",
  "cors": [
      {
          "maxAgeSeconds": "360000000",
          "method": [
             "GET",
             "HEAD",
             "DELETE"
          ],
          "origin": [
             "*"
          ],
          "responseHeader":[
            "Content-Type"
         ]
      }
  ]
}'

0

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

moesif CORS এক্সটেনশন ইনস্টলের পরে নিশ্চিত হয়ে নিন, আপনি এটি চালু করেন


4
এটি ক্ষেত্রের অজানা ব্যবহারকারীর জন্য সমস্যাটি সত্যিই সমাধান করে না - কেবলমাত্র একটি একক মেশিনের জন্য।
প্রাথমিক

0

কোনও সিওআরএস শিরোলেখ প্রয়োগ করে যে কোনও সংস্থান অ্যাক্সেস করতে আপনি নিজের জন্য গোলংয়ে তৈরি একটি ছোট প্রকল্প ব্যবহার করতে পারেন - https://proxify-cors.herokuapp.com/

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