Go Academy · पाठ

CORS और Panic Recovery मिडलवेयर

क्रॉस-ओरिजिन नीतियाँ और panic से पुनर्प्राप्ति

पाठ 4, कुल 4 में से13 चरण

CORS और Panic Recovery मिडलवेयर, CoddyKit पर Go Academy का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Go Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

CORS क्या है

क्रॉस-ओरिजिन रिसोर्स शेयरिंग (CORS) एक ब्राउज़र सुरक्षा तंत्र है, जो यह सीमित करता है कि कौन-से ओरिजिन आपके API को HTTP अनुरोध भेज सकते हैं। सर्वर प्रतिक्रिया हेडर निर्धारित करके इसकी अनुमति देता है।

CORS प्रीफ़्लाइट

कस्टम हेडर या गैर-साधारण विधि वाले क्रॉस-ओरिजिन अनुरोध से पहले, ब्राउज़र OPTIONS प्रीफ़्लाइट भेजता है। आपके मिडलवेयर को OPTIONS संभालना चाहिए और CORS हेडर के साथ 200 लौटाना चाहिए।

CORS मिडलवेयर

विकास के लिए एक सरल CORS मिडलवेयर:

func CORS(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        w.Header().Set("Access-Control-Allow-Origin", "https://myapp.com")
        w.Header().Set("Access-Control-Allow-Methods", "GET,POST,PUT,DELETE,OPTIONS")
        w.Header().Set("Access-Control-Allow-Headers", "Authorization,Content-Type")
        if r.Method == http.MethodOptions {
            w.WriteHeader(http.StatusOK); return
        }
        next.ServeHTTP(w, r)
    })
}

अनुमत ओरिजिन

जब क्रेडेंशियल (कुकी, Authorization हेडर) शामिल हों, तब Access-Control-Allow-Origin: * का उपयोग न करें — इसके बजाय स्पष्ट ओरिजिन का उपयोग करें। कई ओरिजिन के लिए अनुमति-सूची के विरुद्ध जाँच करें।

allowedOrigins := map[string]bool{
    "https://app.example.com": true,
    "https://dev.example.com": true,
}

if allowedOrigins[r.Header.Get("Origin")] {
    w.Header().Set("Access-Control-Allow-Origin", r.Header.Get("Origin"))
}

Access-Control-Allow-Credentials

कुकी और Authorization हेडर को क्रॉस-ओरिजिन भेजने की अनुमति दें:

w.Header().Set("Access-Control-Allow-Credentials", "true")

rs/cors लाइब्रेरी

लचीले ओरिजिन मिलान, क्रेडेंशियल समर्थन और प्रीफ़्लाइट कैशिंग वाले उत्पादन-स्तरीय CORS के लिए github.com/rs/cors लाइब्रेरी का उपयोग करें।

c := cors.New(cors.Options{
    AllowedOrigins: []string{"https://example.com"},
    AllowedMethods: []string{"GET","POST","PUT","DELETE"},
    AllowedHeaders: []string{"Authorization","Content-Type"},
    AllowCredentials: true,
})
handler := c.Handler(mux)

पैनिक पुनर्प्राप्ति मिडलवेयर

सर्वर को क्रैश होने और सभी सक्रिय कनेक्शन खोने से बचाने के लिए पैनिक से पुनर्प्राप्त करें:

func Recovery(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        defer func() {
            if rec := recover(); rec != nil {
                log.Printf("panic: %v\n%s", rec, debug.Stack())
                http.Error(w, "Internal Server Error", 500)
            }
        }()
        next.ServeHTTP(w, r)
    })
}

runtime/debug.Stack

पैनिक होने पर मूल कारण का निदान करने में सहायता के लिए पूरी गोरूटीन स्टैक ट्रेस प्रिंट करें:

import "runtime/debug"
log.Printf("panic: %v\n%s", rec, debug.Stack())

Sentry एकीकरण

क्लाइंट को 500 लौटाने से पहले, पुनर्प्राप्ति मिडलवेयर के भीतर पैनिक को Sentry या ऐसी ही त्रुटि-ट्रैकिंग सेवाओं को भेजें।

क्रम: Recovery सबसे बाहरी

Recovery को हमेशा सबसे बाहरी, अर्थात सबसे पहले लागू होने वाले, मिडलवेयर के रूप में पंजीकृत करें, ताकि वह अन्य सभी मिडलवेयर और हैंडलर के पैनिक पकड़ सके।

handler := Recovery(RequestID(Logger(Auth(mux))))

पैनिक पुनर्प्राप्ति का परीक्षण

ऐसा हैंडलर लिखें जो जानबूझकर पैनिक उत्पन्न करे, उसे httptest में मिडलवेयर के माध्यम से कॉल करें और सुनिश्चित करें कि प्रतिक्रिया 500 है।

panicHandler := http.HandlerFunc(func(_ http.ResponseWriter, _ *http.Request) { panic("test") })
w := httptest.NewRecorder()
Recovery(panicHandler).ServeHTTP(w, httptest.NewRequest("GET", "/", nil))
assert.Equal(t, 500, w.Code)

त्वरित जाँच

पैनिक पुनर्प्राप्ति मिडलवेयर सबसे बाहरी परत में क्यों होना चाहिए?

पुनरावलोकन: CORS और पैनिक पुनर्प्राप्ति

मुख्य बिंदु:

  • CORS: Access-Control-Allow-* हेडर निर्धारित करें; OPTIONS प्रीफ़्लाइट संभालें
  • क्रेडेंशियल शामिल होने पर Allow-Origin में स्पष्ट ओरिजिन रखें, * नहीं
  • Recovery: defer recover() + स्टैक ट्रेस दर्ज करें + 500 लौटाएँ
  • Recovery सबसे बाहरी मिडलवेयर होना चाहिए
शुरुआत निःशुल्क

एआई शिक्षक के साथ Go सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
51
पाठ
203

अक्सर पूछे जाने वाले प्रश्न

क्या “CORS और Panic Recovery मिडलवेयर” पाठ निःशुल्क है?

हाँ — Go Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “CORS और Panic Recovery मिडलवेयर” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Go Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“CORS और Panic Recovery मिडलवेयर” में मैं क्या सीखूँगा?

क्रॉस-ओरिजिन नीतियाँ और panic से पुनर्प्राप्ति आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Go Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Go Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Go Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“CORS और Panic Recovery मिडलवेयर” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Go Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Go Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. HTTP मिडलवेयर श्रृंखला की मूल बातें
  2. लॉगिंग और अनुरोध ID मिडलवेयर
  3. प्रमाणीकरण और दर-सीमा मिडलवेयर
  4. CORS और Panic Recovery मिडलवेयर
← Go Academy पर वापस जाएँ