সিওআরএস নীতি এবং নেট নেট 3.1 নিয়ে সমস্যা


11

আমি কী অনুপস্থিত তা নিশ্চিত নই, তবে .NET কোর 3.1 এবং কৌনিক 8 ক্লায়েন্টের সাথে আমার CORS নীতি কাজ করছে বলে মনে হচ্ছে না।

Startup.cs:

        public void ConfigureServices(IServiceCollection services)
        {
            // ...

            // Add CORS policy
            services.AddCors(options =>
            {
                options.AddPolicy("foo",
                builder =>
                {
                    // Not a permanent solution, but just trying to isolate the problem
                    builder.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader();
                });
            });

            services.AddControllers();
        }

        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseHttpsRedirection();

            // Use the CORS policy
            app.UseCors("foo");

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }

ত্রুটি বার্তা ক্লায়েন্ট-পাশ:

Access to XMLHttpRequest at 'https://localhost:8082/api/auth/' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

হালনাগাদ:

যদিও আমি ছিল CORS ভুল কনফিগার (এবং নিচের গৃহীত উত্তর দিয়ে আসলে সাহায্যের করেছিল) ইস্যু রুট সম্পর্কহীন ছিল। অতিরিক্ত প্রসঙ্গে, অ্যাপ্লিকেশনটি সি এল এল ব্যবহার করে এপিআই এবং কৌণিক অ্যাপ্লিকেশন চালানোর সময় পুরোপুরি ঠিকঠাক কাজ করছিল - তাদের উভয়কে একটি ওয়েব সার্ভারে স্থাপন করার পরে আমি কেবল এই সমস্যাটিই পেয়েছিলাম।

"প্রকৃত" ইস্যু শেষ পর্যন্ত SQL সংযোগ, যা আমি শুধুমাত্র API- এ ফ্ল্যাট ফাইল ত্রুটি লগিং যুক্ত করা এবং একটি SQL সার্ভার ট্রেস চলমান এটি সেই অ্যাপ্লিকেশানটি এ সব এসকিউএল সাথে সংযোগ করতে সক্ষম হয়নি পর আবিষ্কৃত এর সাথে সম্পর্কিত করা হচ্ছে।

আমি সাধারণত এটি 500 ডলার ফেরত প্রত্যাশা করতাম এবং আমি 10 সেকেন্ডের মধ্যে বিষয়টি বুঝতে পেরেছিলাম - তবে সিওআরএসের ভুল কনফিগারেশন বলতে বোঝায় যে 500 কখনই ফিরে আসেনি কারণ কর্নস মিডলওয়্যারটি প্রথম ব্যর্থ হয়েছিল। একেবারে নিখুঁতভাবে বলতে পেরে হতাশ হলেন! । তবে আমি এখানে যুক্ত করতে চাই যে অন্যরা যদি এই পরিস্থিতিতে নিজেকে খুঁজে পায় তবে আমি চাইলে "ভুল খরগোশের পিছনে তাড়া করছিলাম" you সিওআরএস কনফিগারেশন ঠিক করার পরে, আমি বুঝতে পারি যে আসল সমস্যাটি পুরোপুরি সিওআরএসের সাথে সম্পর্কিত নয়।

টি এল; ডিআর; - কখনও কখনও "নন-কর্স"। নেট সার্ভার-সাইড ত্রুটিগুলি কর্স ত্রুটি হিসাবে ফিরে পাওয়া যেতে পারে যদি CORS নীতিগুলি সঠিকভাবে সেট না করা হয়

তথ্যসূত্র:

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1#cors-with-named-policy-and-middleware

https://medium.com/swlh/cors-headers-with-dot-net-core-3-5c9dfc664785


1
app.UseCors("foo");আগে সেট করার চেষ্টা করুনapp.UseHttpsRedirection();
স্টেপআপ

@ স্টেপআপ সুপারিশের জন্য ধন্যবাদ জানায়, তবে এখনও ভাগ্য হয় না
এম জঞ্জারসেন

আপনি আপনার সমস্যার সমাধান হয়েছে?
পদক্ষেপ

কেউ কি এই সমস্যা সমাধান করেছেন? কেন কোন উত্তর গৃহীত হয় না?
ওয়াসিম আহমেদ নাe

হ্যাঁ, দুঃখিত, আমি এই সমস্যাটি সমাধানের পরে আর কখনও ঘুরে দেখিনি। আমি কিছু অতিরিক্ত প্রসঙ্গ সহ প্রশ্নটিতে একটি আপডেট যুক্ত করেছি। ধন্যবাদ!
কেএমজুঙ্গারসেন

উত্তর:


20

প্রথমে app.UseRouting();তারপরapp.UseCors("foo");

Configureনীচের মত আপনার পদ্ধতি পরিবর্তন করুন :

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();



    app.UseRouting();  // first
    // Use the CORS policy
    app.UseCors("foo"); // second

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

এটা আমার জন্য কাজ!


- সেখানে কোনও নুগেট প্যাকেজ দরকার?
চানা

কর্সগুলির জন্য nuget প্যাকেজ
চানা

1
@chana - আপনি nuget প্যাকেজটি ইনস্টল করার প্রয়োজন হবে না
AbolfazlR

7
আমি এই ইস্যুতে আটকে ছিলাম! ইন্টারনেট থেকে কিছুই কাজ করেনি। ওপির ConfigureServicesকোডের সাথে আপনার সমাধানটি আমার সমস্যার সমাধান করেছে। অনেক ধন্যবাদ!
তাহরীম ইকবাল

1
আমি যুগে যুগে স্টাম্প ছিল। অনেক ধন্যবাদ!
মাইলস জে

6

ওয়েব এপিআই ব্যবহার করছে app.UseHttpsRedirection(); CORSঅনুরোধ ক্লায়েন্ট httpsভিত্তিক না হলে কোন সমস্যার কারণ । সুতরাং httpক্লায়েন্টের সাথে এটি ব্যবহার করার জন্য আমাদের সেই লাইনটি মন্তব্য করা বা অপসারণ করতে হবে।

এই সমস্যাটি নয় CORS, https এই সমস্যাটি সৃষ্টি করছে তবে নিক্ষেপ করা ত্রুটিটি এটি সিওআরএস দিয়ে বলছে।


থ্যাঙ্কস ম্যান। এটি আমার সমস্যার সমাধান করেছে
12:58 এ রিগ্যান গ্যালান্ট

1
ঐটা ঠিক! UseHttpsRedirection () লাইনটি UseCors () এর পরে হতে হবে
এরিক


0

আপনি যেমন স্থানীয় হস্ট ব্যবহার করছেন http://localhost:4200, তারপরে এটি আপনার কনফিগারেশনে সেট করার চেষ্টা করুন:

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => options.AddPolicy("ApiCorsPolicy", build =>
    {                
        build.WithOrigins("http://localhost:4200")
             .AllowAnyMethod()
             .AllowAnyHeader();
        }));
        // ... other code is omitted for the brevity
     }
}

এবং Configureপদ্ধতি:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, IServiceProvider provider)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }
    app.UseCors("ApiCorsPolicy");
    app.UseHttpsRedirection();
    app.UseAuthentication();
    app.UseMvc();
}

0

কর সার্ভিস যুক্ত করার .SetIsOriginAllowed((host) => true)পরে অবশ্যই অন্তর্ভুক্ত করা নিশ্চিত করুন.WithOrigins("http://localhost:4200")

services.AddCors(options => {
            options.AddPolicy("mypolicy",builder => builder
            .WithOrigins("http://localhost:4200/")
            .SetIsOriginAllowed((host) => true)
            .AllowAnyMethod()
            .AllowAnyHeader());
  });

0

নেট কোর 3.1 এর জন্য

সর্বোত্তম উপায় হ'ল অ্যাপ.সেটেটিং ফাইলগুলিতে মূল পাথ সঞ্চয় করা

"Origins": {
    "Server": "http://localhost:5001/",
    "Client": "http://localhost:4200/",
    "CorsOrigins": "http://localhost:4200,http://localhost:5001"
}

এবং ConfigureServicesপদ্ধতিতে কনফিগারেশন বিভাগ থেকে উত্স নির্ধারণ করুন

services.AddCors(
            options => options.AddPolicy(
                PolicyNames.AllowOrigins,
                builder => builder
                    .WithOrigins(
                        Configuration["Origins:CorsOrigins"]
                            .Split(",", StringSplitOptions.RemoveEmptyEntries)
                            .Select(s => s.TrimEnd('/'))
                            .ToArray()
                    )
                    .AllowAnyHeader()
                    .AllowAnyMethod()
                    .AllowCredentials()
            )
        );

পরিশেষে, কেবল Configureপদ্ধতিতে কর্স ব্যবহার করুন ( কোনওভাবেই ব্যবহারের আদেশ নেই!)

app.UseCors(PolicyNames.AllowOrigins);     //Enable CORS!
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.