আপনি যদি নিজের রাউটারটিকে ওভাররাইড করতে না চান (যদি আপনার অ্যাপটি এটি সমর্থন করে এমন কোনও উপায়ে কনফিগার না করে বা রুটের ভিত্তিতে কোনও রুটে CORS কনফিগার করতে চান) তবে পূর্বের ফ্লাইটের অনুরোধটি পরিচালনা করতে একটি অপশন হ্যান্ডলার যুক্ত করুন ।
যেমন, গরিলা মুক্সের সাথে আপনার রুটগুলি দেখতে দেখতে এমন হবে:
accounts := router.Path("/accounts").Subrouter()
accounts.Methods("POST").Handler(AccountsCreate)
accounts.Methods("OPTIONS").Handler(AccountsCreatePreFlight)
উপরে আমাদের নোট পোস্টার হ্যান্ডলার ছাড়াও, আমরা একটি নির্দিষ্ট অপশন পদ্ধতি হ্যান্ডলার সংজ্ঞায়িত করছি ।
এবং তারপরে অপশন প্রিফলাইট পদ্ধতিটি আসলভাবে পরিচালনা করতে আপনি অ্যাকাউন্টসক্রিয়েটপ্রিফ্লাইটটিকে এভাবে সংজ্ঞায়িত করতে পারেন:
// Check the origin is valid.
origin := r.Header.Get("Origin")
validOrigin, err := validateOrigin(origin)
if err != nil {
return err
}
// If it is, allow CORS.
if validOrigin {
w.Header().Set("Access-Control-Allow-Origin", origin)
w.Header().Set("Access-Control-Allow-Methods", "POST")
w.Header().Set("Access-Control-Allow-Headers",
"Accept, Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization")
}
আমার জন্য কী সত্যিই এই সমস্ত ক্লিক করেছে (আসলে CORS কীভাবে কাজ করে তা বোঝার পাশাপাশি) এটি একটি প্রাকফ্লাইট অনুরোধের এইচটিটিপি পদ্ধতি প্রকৃত অনুরোধের এইচটিটিপি পদ্ধতি থেকে পৃথক। সিওআরএস শুরু করার জন্য, ব্রাউজারটি এইচটিটিপি পদ্ধতি বিকল্পগুলির সাথে একটি প্রিফ্লাইট অনুরোধ প্রেরণ করে, যা আপনাকে আপনার রাউটারে স্পষ্টভাবে পরিচালনা করতে হবে, এবং তারপরে, যদি এটি যথাযথ প্রতিক্রিয়া পায় if"Access-Control-Allow-Origin": origin
আপনার অ্যাপ্লিকেশন থেকে (বা "*") প্রকৃত সূচনা করে অনুরোধ।
আমি আরও বিশ্বাস করি যে আপনি কেবল স্ট্যান্ডার্ড ধরণের অনুরোধের জন্য "*" করতে পারেন (যেমন: জিইটি), তবে অন্যদের জন্য আপনাকে আমার উপরের মতো স্পষ্টতই মূলটি সেট করতে হবে।
w.Header().Add("Access-Control-Allow-Methods", "PUT") w.Header().Add("Access-Control-Allow-Headers", "Content-Type")