क्रॉस-ओरिजिन रिसोर्स शेयरिंग (CORS) एक ऐसा तंत्र है जो ब्राउज़रों को यह बताने के लिए अतिरिक्त HTTP हेडर्स का उपयोग करता है कि एक ओरिजिन पर चल रहे वेब एप्लिकेशन को किसी अलग ओरिजिन से चुनिंदा रिसोर्सेज तक पहुंच दी जाए। एक वेब एप्लिकेशन एक क्रॉस-ओरिजिन HTTP रिक्वेस्ट निष्पादित करता है जब वह किसी ऐसे रिसोर्स का अनुरोध करता है जिसका ओरिजिन (डोमेन, प्रोटोकॉल, या पोर्ट) उसके अपने से अलग होता है।
उदाहरण के लिए, आइए एक ऐसे एप्लिकेशन पर विचार करें जिसमें फ्रंट एंड (UI) और बैक एंड (सर्विस) हो। मान लीजिए फ्रंट-एंड https://demodomain-ui.com से सर्व किया जाता है और बैकएंड https://demodomain-service.com/api से सर्व किया जाता है। यदि कोई एंड यूज़र एप्लिकेशन को एक्सेस करने का प्रयास करता है, तो सुरक्षा कारणों से ब्राउज़र UI से शुरू की गई क्रॉस-ओरिजिन HTTP रिक्वेस्ट को प्रतिबंधित कर देते हैं।
इसलिए इससे पार पाने के लिए, CORS मानक की आवश्यकता होती है क्योंकि यह सर्वर्स को यह निर्दिष्ट करने की अनुमति देता है कि न केवल कौन इसकी संपत्ति तक पहुंच सकता है, बल्कि यह भी कि संपत्ति तक कैसे पहुंचा जा सकता है। क्रॉस-ओरिजिन रिक्वेस्ट मानक HTTP रिक्वेस्ट मेथड्स का उपयोग करके की जाती हैं। अधिकांश सर्वर GET रिक्वेस्ट की अनुमति देंगे, जिसका अर्थ है कि वे बाहरी ओरिजिन (जैसे, एक वेब पेज) से अपने एसेट्स को पढ़ने के लिए रिसोर्सेज की अनुमति देंगे। HTTP रिक्वेस्ट मेथड्स जैसे PATCH, PUT, या DELETE। CORS मानक द्वारा जोड़े गए निम्नलिखित HTTP हेडर्स हैं:
- Access-Control-Allow-Origin
- Access-Control-Allow-Credentials
- Access-Control-Allow-Headers
- Access-Control-Allow-Methods
- Access-Control-Expose-Headers
- Access-Control-Max-Age
- Access-Control-Request-Headers
- Access-Control-Request-Method
- Origin
ग्लोबल लेवल पर CORS सक्षम करना
पहला कदम NuGet पैकेज मैनेजर से Microsoft.AspNet.WebApi.Cors इंस्टॉल करना है।
फिर App_Start/WebApiConfig.cs फ़ाइल खोलें। WebApiConfig.Register मेथड में निम्नलिखित कोड जोड़ें:

कंट्रोलर और एक्शन लेवल पर CORS सक्षम करना
हम कंट्रोलर या एक्शन मेथड लेवल पर भी CORS सक्षम कर सकते हैं जैसे नीचे:
उदाहरण
using System.Web.Http;
using System.Web.Http.Cors;
namespace DemoWebApplication.Controllers
{
[EnableCors("*", "*", "*")] // कंट्रोलर लेवल
public class DemoController : ApiController
{
[EnableCors("*", "*", "*")] // एक्शन लेवल
public IHttpActionResult Get(int id)
{
return Ok();
}
}
}
इसी तरह, हम [DisableCors] एट्रिब्यूट का उपयोग करके CORS को अक्षम कर सकते हैं।