আমি কীভাবে সিওআরএস সেট আপ করব?


12

ড্রুপাল 8 এর রয়েছে রিসটুল ওয়েব সার্ভিস ইন-বিল্ট ইন কোর ইন এবং 8.2 সাল থেকে আমাদের কোর মডিউলটির প্রয়োজন নেই ।

এখন পরিষেবাদি ব্যবহার করতে আমরা কেবল এখানে উল্লিখিত হিসাবে ডিফল্ট.সার্ভিস.আইএমএল ফাইল সক্ষম এবং কনফিগার করব

তবে আমি অন্য ডোমেনের মাধ্যমে ওয়েব পরিষেবা অ্যাক্সেসের অনুমতি দিতে এই সেটআপটি কনফিগার করতে সক্ষম হইনি।

কর্সের জন্য আমার বর্তমান সেবা.আইএমএল সেটআপটি হ'ল:

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token,authorization,content-type,accept,origin,x-requested-with']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['POST, GET, OPTIONS, DELETE, PUT']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: 1000
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: false

আমি এ সম্পর্কে আরও বিস্তারিত কনফিগারেশন খুঁজতে গুগল করেছিলাম তবে এটির সন্ধান করতে পারি নি।

আমি এটি দুটি ভিন্ন ডোমেন জুড়ে পরীক্ষার বিকাশের জন্য তৈরি করছি।

ওয়েব পরিষেবাগুলির জন্য প্যানথিয়ন দেব পরিবেশ এবং সেগুলি ব্যবহারের জন্য লোকালহোস্ট কাস্টম .ডিডি ডোমেন ব্যবহার করা।

ক্রোম সিওআরএস এক্সটেনশন ব্যবহার করে পরিষেবা অ্যাক্সেস সূক্ষ্মভাবে কাজ করে।


যদি আপনি ইতিমধ্যে আপনার সাইট / ডিফল্ট / পরিষেবাদি.আইএমএলটিকে পূর্ববর্তী উত্তরে বলেছিলেন, এবং এটি কার্যকর না হয় তবে আপনার ওয়েব সার্ভারে সিওআরএস সক্ষম হয়েছে তা নিশ্চিত করুন। উদাহরণস্বরূপ, এনগিনেক্সে আপনাকে আপনার সার্ভার ব্লক কনফিগারেশনের একটি অবস্থান যুক্ত করতে / সংশোধিত করতে হবে https://enable-cors.org/server_nginx.html
পিন

উত্তর:


16

আমি প্যানথিয়নে মোটামুটি সম্প্রতি এটিতে ছুটে এসেছি এবং আশা করি আপনি যদি ইতিমধ্যে এটি সমাধান না করে থাকেন তবে এটি আপনাকে সহায়তা করবে।

cors.config:
    enabled: true
    # Specify allowed headers, like 'x-allowed-header'.
    allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with', 'access-control-allow-origin','x-allowed-header','*']
    # Specify allowed request methods, specify ['*'] to allow all possible ones.
    allowedMethods: ['*']
    # Configure requests allowed from specific origins.
    allowedOrigins: ['http://localhost/','http://localhost:3000','http://localhost:3001','http://localhost:3002','*']
    # Sets the Access-Control-Expose-Headers header.
    exposedHeaders: false
    # Sets the Access-Control-Max-Age header.
    maxAge: false
    # Sets the Access-Control-Allow-Credentials header.
    supportsCredentials: true

কয়েকটি বিষয় লক্ষণীয় ...

প্যানথিয়নে ফাইলটির অবস্থান সম্পর্কিত, দয়া করে নিশ্চিত হোন যে আপনার সার্ভিস.আইএমএল ফাইলটি / সাইট / ডিফল্ট বনাম কেবল / সাইটগুলিতে রয়েছে। আমি ভুলভাবে ইমপ্রেশনে ছিলাম যে এটি উভয় স্থান থেকেই কার্যকর হবে। এটি কেবলমাত্র সাইটগুলি / ডিফল্ট ডিরেক্টরিতে থাকলে কাজ করবে।

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

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


4
কেন অনুমোদিত অরগিনগুলি নির্দিষ্ট করে এবং তারপরে '*' পাস করতে হবে?
খ্রিস্টান

কেবল উভয় বিকল্প প্রদর্শন করতে। একটি বা অন্য বাদ দিতে নির্দ্বিধায় দয়া করে।
শন ম্যাথিউজ

exposedHeaders মিথ্যা বা একটি অ্যারের, প্রতি হওয়া উচিত drupal.org/project/drupal/issues/2905848
জন

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

9

সন্ধান করুন: ... / সাইটস / ডিফল্ট / ডিফল্ট.সার্ভিস.আইএমএল

একটি অনুলিপি তৈরি করুন এবং অনুলিপিটির এখানে নাম দিন:

... / সাইট / ডিফল্ট / services.yml

কোডটির এই অংশটি সন্ধান করুন: কর্স.কনফিগ: সক্ষম: মিথ্যা

এবং নিম্নলিখিতগুলির সাথে প্রতিস্থাপন করুন - cors.config: সক্ষম: সত্য

ক্যাশে সাফ করুন।


ডি: আমি সবকিছু দেখেছি পর্যন্ত আপনার উত্তর, ধন্যবাদ সবচেয়ে গুরুত্বপূর্ণ বিন্দু যা ক্লিয়ারিং দ্য ক্যাশে দেখানোর জন্য (CACHE পুনর্নির্মাণের) চেষ্টা অনুমিত
emy

3

নিম্নলিখিত সেটিংস আমার জন্য কাজ করছে।

cors.config:
  enabled: true
  # Specify allowed headers, like 'x-allowed-header'.
  allowedHeaders: ['x-csrf-token','authorization','content-type','accept','origin','x-requested-with']
  # Specify allowed request methods, specify ['*'] to allow all possible ones.
  allowedMethods: ['*']
  # Configure requests allowed from specific origins.
  allowedOrigins: ['*']
  # Sets the Access-Control-Expose-Headers header.
  exposedHeaders: false
  # Sets the Access-Control-Max-Age header.
  maxAge: false
  # Sets the Access-Control-Allow-Credentials header.
  supportsCredentials: false

0

উন্মোচিত হাইডার্স: সত্যটি বৈধ নয় এবং সতর্কতা সৃষ্টি করবে: ইমপ্লোড (): এসএম 89 Invalid স্ট্যাক \ কর্সসোর্সী>> অ্যাড্যাক্টুয়ালআরভেস্টহাইডার্স () / বিক্রেতার / asm89 / স্ট্যাক-কর্স / এসসিআর / Asm89 / স্ট্যাক / কর্স সার্ভিসে লাইন 94 অবৈধ ments পিএইচপি) # 0 / ওয়েবে / কোর / অন্তর্ভুক্ত / বুটস্ট্র্যাপ.ইন(584) এটি https://developer.mozilla.org/en-US/docs/Web/ দেখার জন্য অনুমোদিত শিরোনাম সহ মিথ্যা বা অ্যারের হওয়া দরকার needs HTTP- র / শিরোলেখ / অ্যাক্সেস-নিয়ন্ত্রণ-প্রকাশ-শিরোলেখ

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