खोज…


टिप्पणियों

ब्राउज़र सुरक्षा एक वेब पेज को अन्य डोमेन के लिए 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 नीति नियंत्रक या कार्रवाई के आधार पर अधिलेखित की जा सकती है, लेकिन यह संपूर्ण एप्लिकेशन के लिए डिफ़ॉल्ट सेट कर सकती है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow