asp.net-core
क्रॉस-ऑरिजिनल रिक्वेस्ट (CORS)
खोज…
टिप्पणियों
ब्राउज़र सुरक्षा एक वेब पेज को अन्य डोमेन के लिए AJAX अनुरोध करने से रोकता है। इस प्रतिबंध को समान-मूल नीति कहा जाता है, और दुर्भावनापूर्ण साइट को किसी अन्य साइट से संवेदनशील डेटा पढ़ने से रोकता है। हालाँकि, कभी-कभी आप अन्य साइटों को अपने वेब ऐप से क्रॉस-ऑरिजिनल अनुरोध करने देना चाहते हैं।
क्रॉस ओरिजिनल रिसोर्स शेयरिंग (CORS) एक W3C मानक है जो सर्वर को समान-मूल पॉलिसी को रिलैक्स करने की अनुमति देता है। कॉर्स का उपयोग करते हुए, एक सर्वर स्पष्ट रूप से दूसरों को खारिज करते हुए कुछ क्रॉस-मूल अनुरोधों की अनुमति दे सकता है। कॉर्स JSONP जैसी पहले की तकनीकों की तुलना में अधिक सुरक्षित और अधिक लचीला है।
सभी अनुरोधों के लिए CORS सक्षम करें
का प्रयोग करें UseCors()
पर विस्तार विधि IApplicationBuilder
में Configure
विधि सभी अनुरोधों का CORS नीति लागू करने के लिए।
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
services.AddCors();
}
public void Configure(IApplicationBuilder app)
{
// Other middleware..
app.UseCors(builder =>
{
builder.AllowAnyOrigin()
.AllowAnyHeader()
.AllowAnyMethod();
});
// Other middleware..
app.UseMvc();
}
विशिष्ट नियंत्रकों के लिए CORS नीति सक्षम करें
विशिष्ट नियंत्रकों के लिए एक निश्चित CORS नीति को सक्षम करने के लिए, आपको ConfigureServices
विधि में AddCors
एक्सटेंशन में नीति AddCors
:
services.AddCors(cors => cors.AddPolicy("AllowAll", policy =>
{
policy.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
}));
इससे आप पॉलिसी को कंट्रोलर में लागू कर सकते हैं:
[EnableCors("AllowAll")]
public class HomeController : Controller
{
// ...
}
अधिक परिष्कृत CORS नीतियां
पॉलिसी बिल्डर आपको परिष्कृत नीतियां बनाने की अनुमति देता है।
app.UseCors(builder =>
{
builder.WithOrigins("http://localhost:5000", "http://myproductionapp.com")
.WithMethods("GET", "POST", "HEAD")
.WithHeaders("accept", "content-type", "origin")
.SetPreflightMaxAge(TimeSpan.FromDays(7));
});
यह नीति केवल उत्पत्ति, http://localhost:5000
और http://myproductionapp.com
को केवल GET
, POST
और HEAD
विधियों से अनुमति देती है और केवल HTTP, content-type
और origin
HTTP हेडर को accept
करती है। SetPreflightMaxAge
विधि से ब्राउज़र को पूर्व निर्धारित अनुरोध ( OPTIONS
) के परिणाम को कैश करने के लिए निर्दिष्ट समय के लिए कैश करने का कारण बनता है।
सभी नियंत्रकों के लिए CORS नीति सक्षम करें
अपने सभी MVC नियंत्रकों में एक CORS नीति को सक्षम करने के लिए आपको कॉन्फ़िगर विधि में AddCors एक्सटेंशन में नीति का निर्माण करना होगा और फिर CorsAuthorizationFilterFactory
पर नीति सेट करना CorsAuthorizationFilterFactory
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Cors.Internal;
...
public void ConfigureServices(IServiceCollection services) {
// Add AllowAll policy just like in single controller example.
services.AddCors(options => {
options.AddPolicy("AllowAll",
builder => {
builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader();
});
});
// Add framework services.
services.AddMvc();
services.Configure<MvcOptions>(options => {
options.Filters.Add(new CorsAuthorizationFilterFactory("AllowAll"));
});
}
public void Configure(IApplicationBuilder app) {
app.useMvc();
// For content not managed within MVC. You may want to set the Cors middleware
// to use the same policy.
app.UseCors("AllowAll");
}
यह CORS नीति नियंत्रक या कार्रवाई के आधार पर अधिलेखित की जा सकती है, लेकिन यह संपूर्ण एप्लिकेशन के लिए डिफ़ॉल्ट सेट कर सकती है।