কীভাবে ASP.net কোর ওয়েবএপিআই-তে CORS সক্ষম করবেন


189

আমি যা করার চেষ্টা করছি

আমার একটি ব্যাকএন্ড এএসপি.নেট কোর ওয়েব এপিআই একটি অ্যাজুর ফ্রি প্ল্যানে হোস্ট করা আছে (উত্স কোড: https://github.com/killerrin/PortLive-Backkend )।

আমার কাছে একটি ক্লায়েন্ট ওয়েবসাইট রয়েছে যা আমি এপিআই ব্যবহার করতে চাই। ক্লায়েন্ট অ্যাপ্লিকেশনটি আজুরে হোস্ট করা হবে না, বরং গিথুব পৃষ্ঠাগুলিতে বা অন্য যে ওয়েব হোস্টিং পরিষেবাদিতে আমার অ্যাক্সেস রয়েছে তাতে হোস্ট করা হবে। এই কারণে ডোমেন নামগুলি আপ আপ হবে না।

এটি খতিয়ে দেখলে আমার ওয়েব এপিআই সাইডে সিওআরএস সক্ষম করা দরকার, তবে আমি এখন বেশ কয়েক ঘন্টা ধরে সবকিছু নিয়ে চেষ্টা করেছি এবং এটি কাজ করতে অস্বীকার করছে।

আমি কীভাবে ক্লায়েন্ট সেটআপ করেছি এটি কেবল একটি সহজ ক্লায়েন্ট React.js এ লিখিত। আমি জ্যাকুরিতে এজেএক্সের মাধ্যমে এপিআইগুলি কল করছি। প্রতিক্রিয়া সাইট কাজ করে তাই আমি জানি যে এটি নয়। জেকারি এপিআই কলটি চেষ্টা 1 হিসাবে নিশ্চিত হওয়ার সাথে সাথে কাজ করে। আমি কলগুলি কীভাবে করব তা এখানে

    var apiUrl = "http://andrewgodfroyportfolioapi.azurewebsites.net/api/Authentication";
    //alert(username + "|" + password + "|" + apiUrl);
    $.ajax({
        url: apiUrl,
        type: "POST",
        data: {
            username: username,
            password: password
        },
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            var authenticatedUser = JSON.parse(response);
            //alert("Data Loaded: " + authenticatedUser);
            if (onComplete != null) {
                onComplete(authenticatedUser);
            }
        },
        error: function (xhr, status, error) {
            //alert(xhr.responseText);
            if (onComplete != null) {
                onComplete(xhr.responseText);
            }
        }
    });

আমি যা চেষ্টা করেছি


চেষ্টা 1 - 'যথাযথ' উপায়

https://docs.microsoft.com/en-us/aspnet/core/security/cors

আমি এই টিউটোরিয়ালটি মাইক্রোসফ্ট ওয়েবসাইটে একটি টি তে অনুসরণ করেছি, এটি স্টার্টআপ.সিগুলিতে বিশ্বব্যাপী সক্ষম করার সমস্ত 3 টি বিকল্প ব্যবহার করে, প্রতিটি নিয়ামকের উপর সেট করে রেখে এবং প্রতিটি ক্রিয়ায় এটি চেষ্টা করে চলেছি।

এই পদ্ধতি অনুসরণ করে ক্রস ডোমেন কাজ করে তবে কেবলমাত্র একটি একক নিয়ামক (একাউন্টকন্ট্রোলারকে পোস্ট করুন) এর একক ক্রিয়ায়। অন্য কিছুর জন্য, Microsoft.AspNetCore.Corsমিডলওয়্যার শিরোনাম সেট করতে অস্বীকার করে।

আমি Microsoft.AspNetCore.CorsNUGET এর মাধ্যমে ইনস্টল করেছি এবং সংস্করণটি হ'ল1.1.2

এখানে এটি আমার কীভাবে স্টার্টআপ। সি-তে সেটআপ হয়

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add Cors
        services.AddCors(o => o.AddPolicy("MyPolicy", builder =>
        {
            builder.AllowAnyOrigin()
                   .AllowAnyMethod()
                   .AllowAnyHeader();
        }));

        // Add framework services.
        services.AddMvc();
        services.Configure<MvcOptions>(options =>
        {
            options.Filters.Add(new CorsAuthorizationFilterFactory("MyPolicy"));
        });

        ...
        ...
        ...
    }

    // This method gets called by the runtime. Use this method to configure 
    //the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IHostingEnvironment env,
    ILoggerFactory loggerFactory)
    {
        loggerFactory.AddConsole(Configuration.GetSection("Logging"));
        loggerFactory.AddDebug();

        // Enable Cors
        app.UseCors("MyPolicy");

        //app.UseMvcWithDefaultRoute();
        app.UseMvc();

        ...
        ...
        ...
    }

আপনি দেখতে পাচ্ছেন, আমি যা বলেছি সবই করছি। আমি উভয় বার এমভিসির আগে কর্স যুক্ত করেছি এবং যখন এটি কাজ [EnableCors("MyPolicy")]করে না তখন আমি প্রতিটি নিয়ামককে তেমনভাবে চেষ্টা করার চেষ্টা করেছি

[Route("api/[controller]")]
[EnableCors("MyPolicy")]
public class AdminController : Controller

চেষ্টা 2 - ব্রুট এটি জোর করে

https://andrewlock.net/adding-default-security-headers-in-asp-net-core/

পূর্ববর্তী প্রচেষ্টায় কয়েক ঘন্টা চেষ্টা করার পরে, আমি অনুভব করেছি যে আমি শিরোনামগুলি ম্যানুয়ালি সেট করার চেষ্টা করে এটিকে হস্তান্তর করার চেষ্টা করব, তাদের প্রতিটি প্রতিক্রিয়াতে চালিয়ে যেতে বাধ্য করব। আমি কীভাবে প্রতিটি প্রতিক্রিয়ায় ম্যানুয়ালি শিরোনাম যুক্ত করব এই টিউটোরিয়ালটি অনুসরণ করে এটি করেছি।

এগুলি আমি যুক্ত করেছি

.AddCustomHeader("Access-Control-Allow-Origin", "*")
.AddCustomHeader("Access-Control-Allow-Methods", "*")
.AddCustomHeader("Access-Control-Allow-Headers", "*")
.AddCustomHeader("Access-Control-Max-Age", "86400")

এগুলি আমি চেষ্টা করেছি এমন অন্য শিরোনাম

.AddCustomHeader("Access-Control-Allow-Methods", "GET, POST, PUT, PATCH, DELETE")
.AddCustomHeader("Access-Control-Allow-Headers", "content-type, accept, X-PINGOTHER")
.AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Host, User-Agent, Accept, Accept: application/json, application/json, Accept-Language, Accept-Encoding, Access-Control-Request-Method, Access-Control-Request-Headers, Origin, Connection, Content-Type, Content-Type: application/json, Authorization, Connection, Origin, Referer")

এই পদ্ধতির সাহায্যে ক্রস সাইটের শিরোনামগুলি যথাযথভাবে প্রয়োগ করা হচ্ছে এবং তারা আমার বিকাশকারী কনসোল এবং পোস্টম্যানে প্রদর্শিত হবে। সমস্যা কিন্তু এটি পাসের যখন Access-Control-Allow-Originচেক WebBrowser মধ্যে (আমি বিশ্বাস করি) একটি হিসি ফিট ছোঁড়ার Access-Control-Allow-Headersজানায়415 (Unsupported Media Type)

সুতরাং নিষ্ঠুর বল পদ্ধতিটিও কাজ করে না


পরিশেষে

কেউ কি এই কাজ করতে পেরেছেন এবং হাত ধার দিতে পারেন, বা আমাকে সঠিক দিকে নির্দেশ করতে সক্ষম হয়েছেন?


সম্পাদনা

তাই এপিআই কলগুলি পেতে, আমাকে জিকুয়ারি ব্যবহার বন্ধ করতে হয়েছে এবং একটি খাঁটি জাভাস্ক্রিপ্ট XMLHttpRequestফর্ম্যাটে স্যুইচ করতে হয়েছিল ।

চেষ্টা ঘ

আমি Microsoft.AspNetCore.Corsমাইন্ডিংডাটার উত্তর অনুসরণ করে কাজটি পরিচালনা করতে সক্ষম হয়েছি, আগে থাকা Configureপদ্ধতিটির বাইরে ।app.UseCorsapp.UseMvc

তদ্ব্যতীত, options.AllowAnyOrigin()ওয়াইল্ডকার্ড সমর্থনের জন্য জাভাস্ক্রিপ্ট এপিআই সলিউশনের সাথে মিশ্রিত করার সাথে সাথে কাজ করাও শুরু করে।

চেষ্টা 2

সুতরাং আমি চেষ্টা করতে চেষ্টা করেছি 2 (এটি জোর করে জোর করে) কাজ করার জন্য ... একমাত্র ব্যতিক্রম ব্যতীত যে ওয়াইল্ডকার্ড Access-Control-Allow-Originকাজ করে না এবং যেমন আমাকে এর মধ্যে অ্যাক্সেস আছে এমন ডোমেনগুলি ম্যানুয়ালি সেট করতে হবে।

এটি স্পষ্টতই আদর্শ নয় যেহেতু আমি কেবল এই ওয়েবএপিআইটি সবার জন্য উন্মুক্ত করতে চাই, তবে এটি কমপক্ষে একটি পৃথক সাইটে আমার পক্ষে কাজ করে, যার অর্থ এটি একটি শুরু

app.UseSecurityHeadersMiddleware(new SecurityHeadersBuilder()
    .AddDefaultSecurePolicy()
    .AddCustomHeader("Access-Control-Allow-Origin", "http://localhost:3000")
    .AddCustomHeader("Access-Control-Allow-Methods", "OPTIONS, GET, POST, PUT, PATCH, DELETE")
    .AddCustomHeader("Access-Control-Allow-Headers", "X-PINGOTHER, Content-Type, Authorization"));

2
আপনার 415 (Unsupported Media Type)সমস্যার জন্য, একটি Content-Typeঅনুরোধ শিরোনাম সেট করুন application/json
টেকনেটিয়াম

5
এই জাতীয় একটি বর্ণনামূলক প্রশ্ন লিখতে সময় ব্যয় করার জন্য ধন্যবাদ।
ব্যবহারকারী 1007074

1
আপনি যদি পোস্টম্যান ব্যবহার করে পরীক্ষা নিরীক্ষণ করেন, আপনি নিশ্চিত হয়ে নিন যে আপনি আদিটিকে * বা অনুরোধ শিরোনামের জন্য কিছু সেট করেছেন, তবে চেষ্টা # 1 কাজ করা উচিত। এই শিরোনাম ব্যতীত অ্যাক্সেস-নিয়ন্ত্রণ-মঞ্জুরি-উত্স প্রতিক্রিয়া শিরোনামে ফিরে আসবে না।
tala9999

উত্তর:


237

আপনার কাছে খুব সাধারণ সিওআরএস নীতি (XXX ডোমেন থেকে সমস্ত অনুরোধের মঞ্জুরি দিন) থাকার কারণে আপনার এটিকে এত জটিল করার দরকার নেই। নিম্নলিখিতটি প্রথমে করার চেষ্টা করুন (সিওআরএসের একটি খুব প্রাথমিক প্রয়োগ)।

আপনি ইতিমধ্যে না থাকলে, কর্স নুগেট প্যাকেজটি ইনস্টল করুন।

Install-Package Microsoft.AspNetCore.Cors

আপনার startup.cs এর কনফিগার সার্ভিস পদ্ধতিতে, CORS পরিষেবা যুক্ত করুন।

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(); // Make sure you call this previous to AddMvc
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

তারপরে আপনার স্টার্টআপের কনফিগার পদ্ধতিতে, নিম্নলিখিতগুলি যুক্ত করুন:

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    // Make sure you call this before calling app.UseMvc()
    app.UseCors(
        options => options.WithOrigins("http://example.com").AllowAnyMethod()
    );

    app.UseMvc();
}

এবার একবার দাও। নীতিগুলি হ'ল যখন আপনি বিভিন্ন ক্রিয়াকলাপের জন্য আলাদা নীতি চান (যেমন বিভিন্ন হোস্ট বা ভিন্ন শিরোনাম)। আপনার সাধারণ উদাহরণের জন্য আপনার সত্যিই এটির দরকার নেই। এই সাধারণ উদাহরণ দিয়ে শুরু করুন এবং সেখান থেকে আপনার যেমন প্রয়োজন তেমন টুইট করুন।

আরও পড়া: http://dotnetcoretutorials.com/2017/01/03/enabling-cors-asp-net-core/


3
এক্সএমএলএইচটিপিআরকোয়েস্ট অ্যান্ড্রুগডফ্রাইপোর্টফোটিও.এজুরিওয়েবসাইটস . net/api/Authentication লোড করতে পারে না । প্রিফলাইট অনুরোধের প্রতিক্রিয়া অ্যাক্সেস নিয়ন্ত্রণের চেকটি পাস করে না: অনুরোধকৃত উত্সটিতে কোনও 'অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স' নেই present উত্স ' লোকালহোস্ট: 3000 ' তাই অ্যাক্সেসের অনুমতি নেই। প্রতিক্রিয়া ছিল HTTP স্থিতি কোড 415.
killerrin

7
আপনি যখন AF `app.UseMvc () TER এর app.UseCors পরে নিবন্ধভুক্ত হন তখন এটি কাজ করার সম্ভাবনা কম` Middlewares অর্ডার তারা নিবন্ধিত হয় মৃত্যুদন্ড কার্যকর করা হয়
Tseng

24
অ্যাপ্লিকেশন ব্যবহার করুন। অ্যাপ্লিকেশনের আগে ইউসকর্স। কিছু কারণে, সিকোয়েন্সটি গুরুত্বপূর্ণ মনে হয়।
মিঃক্লান

1
আমার জন্য, ২.০-এ সিওআরএসের বৃহত্তম সমস্যাটি হ'ল এটি কী ভুল তা বলে না, কেবল নিঃশব্দে CORS শিরোনাম সেট করতে ব্যর্থ। দ্রষ্টব্য : আপনার সমস্ত প্রয়োজনীয় শিরোনাম নীতিতে যুক্ত করতে মনে রাখবেন বা এটি ব্যর্থ হবে (আমার বিষয়বস্তুর ধরণ ছিল)। আমার জন্যও অদ্ভুত বিষয় যে CORS মিডলওয়্যার অনুরোধ প্রসেসিং ব্রেক করে না, কেবল লগগুলিতে জানিয়েছে যে উত্স অনুমোদিত নয় এবং .. অনুরোধটি আরও পাস করে (মিডলওয়্যার ক্রমটি সঠিক ছিল)।
Andrii M4n0w4R

2
এগুলির যে options.DisableHttpsRequirement();কোনও একটির কাজ করার জন্য আমাকে সক্ষম করতে হয়েছিল। দেখে মনে হচ্ছে https কর্স সেটিংস প্রয়োগ হচ্ছে না।
মাইকেল ব্রাউন

206
  • ইন ConfigureServices যোগ services.AddCors(); services.AddMvc () আগে;
  • কনফিগারে UseCors যুক্ত করুন

    app.UseCors(builder => builder
        .AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader()
        .AllowCredentials());   
    app.UseMvc();
    

মূল বিষয়টি হ'ল app.UseCorsআগে, যোগ করুন app.UseMvc()

আপনি এমভিসি এর আগে সিওআরএস কার্যকারিতা ঘোষণা করেছেন তা নিশ্চিত করুন যাতে এমভিসি পাইপলাইন নিয়ন্ত্রণ পাওয়ার আগে মিডলওয়্যারটি আগুন ধরিয়ে দেয় এবং অনুরোধটি বন্ধ করে দেয়।

উপরের পদ্ধতিটি কাজ করার পরে আপনি এপিআই কলগুলি গ্রহণ করতে একটি নির্দিষ্ট ওআরআইজিআইএনটি কনফিগার করতে পারেন এবং আপনার এপিআই এত সহজেই কারও কাছে ছেড়ে দেওয়া এড়াতে পারবেন

public void ConfigureServices(IServiceCollection services)
{
    services.AddCors(options => options.AddPolicy("ApiCorsPolicy", builder =>
    {
        builder.WithOrigins("http://localhost:4200").AllowAnyMethod().AllowAnyHeader();
    }));
    services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
}

কনফিগার পদ্ধতিতে আপনার সদ্য তৈরি করা নীতিটি ব্যবহার করতে সিওআরএসকে বলুন:

app.UseCors("ApiCorsPolicy");
app.UseMvc();

আমি এই বিষয়টিতে এই কমপ্যাক্ট নিবন্ধটি সবেমাত্র পেয়েছি - https://dzone.com/articles/cors-in-net-core-net-core-security-part-vi


1
এটি আমার পক্ষে কাজ করে। কোডেপ্রজেক্ট
আর্টিকেলস

17
এটি ভাল "শুরু" পয়েন্ট হিসাবে সত্যই আরও উপভোগ করা উচিত। কোডিংয়ের 25 বছরেরও বেশি অভিজ্ঞতার মধ্যে আমার বরাবরই কীভাবে বন্যার দ্বারগুলি খোলার তা নিশ্চিত হওয়া যে এটি বাস্তবে "কাজ" করে এবং তারপরে প্রয়োজনীয় / ঘনিষ্ঠভাবে নিরাপদ জিনিসগুলি নিশ্চিত করে তা নিশ্চিত করে রাখা ভাল।
ইন্ডি-জোনস

4
কেবল এটি উল্লেখ Configure()করার জন্য , আদেশের বিপরীতে এখানে সত্যিকারের পক্ষে গুরুত্বপূর্ণ নয়ConfigureServices()
বি 12 টিস্টারে

আমি পরবর্তী পাঠকের লিঙ্কটি ব্যবহার করেছি এবং এই পদক্ষেপগুলি এই ত্রুটিটি সমাধান করেছে। এই পরিবর্তনগুলি কোথায় স্থাপন করা উচিত তা আমি নিশ্চিত ছিলাম না (আমি ভেবেছিলাম এপিআই)। লিঙ্কটি নিশ্চিত করেছে যে তাদের এপিআইতে স্থাপন করা উচিত। সাহায্যের জন্য ধন্যবাদ. আমি এই ত্রুটিটি দিয়ে আমার চাকাগুলি পুরোপুরি ঘুরছিলাম।
রিচার্ড

এটি Asp.Net Core 2.1 এর সাথে এবং আরও গুরুত্বপূর্ণভাবে লোকালহোস্টের সাথে কাজ করে
মিশাল ফ্রাইস্ট্যাকি

28

আমি আমার নিজস্ব মিডলওয়্যার ক্লাস তৈরি করেছি যা আমার পক্ষে কাজ করেছে, আমি মনে করি। নেট কোর মিডলওয়্যার ক্লাসে কিছু সমস্যা আছে

public class CorsMiddleware
{
    private readonly RequestDelegate _next;

    public CorsMiddleware(RequestDelegate next)
    {
        _next = next;
    }

    public Task Invoke(HttpContext httpContext)
    {
        httpContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
        httpContext.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
        httpContext.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name");
        httpContext.Response.Headers.Add("Access-Control-Allow-Methods", "POST,GET,PUT,PATCH,DELETE,OPTIONS");
        return _next(httpContext);
    }
}

// Extension method used to add the middleware to the HTTP request pipeline.
public static class CorsMiddlewareExtensions
{
    public static IApplicationBuilder UseCorsMiddleware(this IApplicationBuilder builder)
    {
        return builder.UseMiddleware<CorsMiddleware>();
    }
}

এবং এটি সূচনার সময় এইভাবে ব্যবহার করেছে

app.UseCorsMiddleware();

অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স চালানোর খুব মার্জিত উপায়।
আর্তুর পনিয়েডিজিয়ায়েক

এটি ওয়েবএপিআই এবং এমভিসিতে কাজ করে এবং কোনও নির্ভরতা নেই, ধন্যবাদ!
জো

আমি এ সম্পর্কে সন্দেহবাদীও ছিলাম, তবে এটি আমার পক্ষে কাজ করেছিল। আমি এটির জন্য মূলত প্রতিটি অন্যান্য পদ্ধতিতে চেষ্টা করেছি যা আমি ইন্টারনেটে খুঁজে পেতে পারি, তবে সার্ভার অ্যাক্সেস শিরোনামগুলির সাথে কী প্রতিক্রিয়া জানাবে না তা নয়। এটি দুর্দান্ত কাজ করেছে। আমি এস্পনেটकोर ২.১ চালাচ্ছি।
জর্দান

ক্লায়েন্টের অনুরোধে শিরোনাম "উত্স" প্রেরণ করলেই আপনার কর্স শিরোনামগুলি ফেরত দেওয়া উচিত। মূল কসপমিডলওয়ারে এটি দেখতে এরকম দেখাচ্ছে:if (!context.Request.Headers.ContainsKey(CorsConstants.Origin)) return this._next(context);
অ্যান্ড্রু প্রিগোর্শ্নেভ

হতে পারে "নেট নেট মিডলওয়্যার ক্লাসের সাথে কিছু ভুল" কারণ কার্ল বা এরকম কোনও কিছুর সাথে পরীক্ষা করার সময় আপনি কেবল "অরিজিন" শিরোনাম যোগ করেন না। আপনি জেএস কোডে একটি অনুরোধ করার সময় ব্রাউজারগুলি স্বয়ংক্রিয়ভাবে এই শিরোনামটি যুক্ত করে।
অ্যান্ড্রু প্রিগোরশ্বনেভ

16

আমার ক্ষেত্রে কেবল getঅনুরোধ মাইন্ডিংডাটার উত্তর অনুসারে কাজ করে। অন্যান্য ধরণের অনুরোধের জন্য আপনাকে লিখতে হবে:

app.UseCors(corsPolicyBuilder =>
   corsPolicyBuilder.WithOrigins("http://localhost:3000")
  .AllowAnyMethod()
  .AllowAnyHeader()
);

যুক্ত করতে ভুলবেন না .AllowAnyHeader()


তৌহিদের সাথে একমত যে AllowAnyHeader () দরকার needed যদি হ্যাডারের অনুরোধটিতে কিছু অনুপস্থিত থাকে তবে এটি সার্ভারকে বিকল্পগুলির অনুরোধটি গ্রহণ করতে দেয়।
রিভন

.AیلوAnyHeader () আমার জন্য এটি করেছে, আমার প্রিফলাইট প্রতিক্রিয়া নিয়ে সমস্যা ছিল।
তাকাজ

11

ব্যবহারকারীর ২26২60০77 on77 এর উত্তরে প্রসারিত করতে আমি জানতে পেরেছিলাম যে আমার ব্যবহারের ক্ষেত্রে .NET কোর ২.১-পূর্বরূপে প্রিফলাইট অনুরোধগুলির জন্য আমাকে অপশন প্রতিক্রিয়া সরবরাহ করতে হবে :

// https://stackoverflow.com/a/45844400
public class CorsMiddleware
{
  private readonly RequestDelegate _next;

  public CorsMiddleware(RequestDelegate next)
  {
    _next = next;
  }

  public async Task Invoke(HttpContext context)
  {
    context.Response.Headers.Add("Access-Control-Allow-Origin", "*");
    context.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
    // Added "Accept-Encoding" to this list
    context.Response.Headers.Add("Access-Control-Allow-Headers", "Content-Type, X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Accept-Encoding, Content-Length, Content-MD5, Date, X-Api-Version, X-File-Name");
    context.Response.Headers.Add("Access-Control-Allow-Methods", "POST,GET,PUT,PATCH,DELETE,OPTIONS");
    // New Code Starts here
    if (context.Request.Method == "OPTIONS")
    {
      context.Response.StatusCode = (int)HttpStatusCode.OK;
      await context.Response.WriteAsync(string.Empty);
    }
    // New Code Ends here

    await _next(context);
  }
}

এবং তারপরে স্টার্টআপ। সি-তে মিডলওয়্যারটিকে সক্ষম করে

public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
  app.UseMiddleware(typeof(CorsMiddleware));
  // ... other middleware inclusion such as ErrorHandling, Caching, etc
  app.UseMvc();
}

1
আমি মিডলওয়্যারটি সেভাবে যুক্ত করার পরামর্শ দিচ্ছি:app.Use<CorsMiddleware>();
Albert221

আপনি এই 2 টি লিগন প্রতিস্থাপন করতে পারেন: প্রসঙ্গ। প্রসঙ্গে অপেক্ষা করুন। রিসপনস.উইটআরসিঙ্ক (স্ট্রিং.এম্পটি); একটি সরল সহ: প্রত্যাবর্তন;
হায়াহ

1
আপনার @ ব্যবহারকারী 8266077 এর উত্তরের প্রসারকে প্রসারিত করার জন্য: সাবধান হন যে অন্য কোনও কারণে যদি অনুরোধটি ব্যর্থ হয় তবে এই মিডওয়্যারটি একটি ব্যতিক্রম ছুঁড়ে ফেলবে এবং শিরোনামগুলি সেট করা হবে না not অর্থ হ'ল সম্মুখভাগে, এটি এখনও সম্পূর্ণ আলাদা কিছু সত্ত্বেও এটি একটি কর সংক্রান্ত সমস্যার মতো দেখাবে। আমি কোনও ব্যতিক্রম ধরা await _next(context)এবং স্থিতি কোড এবং প্রতিক্রিয়াটিকে ম্যানুয়ালি সেট করে যদি এটি ঘটে তবে আমি বাইপাস করেছি । অনুমোদনের প্রয়োজন হয় এমন প্রতিক্রিয়া থেকে অনুরোধ করার সময় আমাকে প্রিফলাইট অনুরোধের জন্য অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-শিরোনামগুলিতে "অনুমোদন" যুক্ত করতে হয়েছিল।
আদম

10

আমি DAYS এর জন্য এটির সাথে লড়াই করছিলাম।

পরিশেষে আমি সরিয়ে কাজ করতে পেয়েছি app.UseCors(CORS_POLICY);করার শীর্ষ এর Configure()

https://weblog.west-wind.com/posts/2016/sep/26/aspnet-core-and-cors-gotchas

এমভিসি অনুরোধটি সম্পূর্ণ করার আগে শিরোনাম প্রয়োগ করতে হবে বলে আপনি> এমভিসির আগে CORS কার্যকারিতা ঘোষণা করেছেন তা নিশ্চিত করুন।

<= যদিও আমার অ্যাপটি কল না করেছে, শীর্ষে UseMVC()চলে UseCors()এসে সমস্যার সমাধান করেছে

এছাড়াও:

  • Microsoft.AspNetCore.Corsনেট কোর 2 এবং নিম্নে প্রয়োজনীয় নুগেট প্যাকেজ হিসাবে ব্যবহৃত হত; এটি এখন স্বয়ংক্রিয়ভাবে মাইক্রোসফ্টের একটি অংশ। নেট কোর 3 এবং উচ্চতরতে এস্পনেটকোর।
  • builder.AllowAnyOrigin()এবং .AllowCredentials()সিওআরএস বিকল্পগুলি এখন নেট কোর 3 এবং উচ্চতর ক্ষেত্রে পারস্পরিক একচেটিয়া
  • সিওআরএস নীতিতে অ্যাঙ্গুলার দিয়ে সার্ভারটি কল করা দরকার বলে মনে হচ্ছে https। । নেট কোর সার্ভারের CORS কনফিগারেশন নির্বিশেষে কোনও HTTP URL একটি CORS ত্রুটি দিয়েছে give উদাহরণস্বরূপ, http://localhost:52774/api/Contactsএকটি সিওআরএস ত্রুটি দেবে; কেবলমাত্র ইউআরএলকে https://localhost:44333/api/Contactsকাজ করাতে পরিবর্তন করা ।

অতিরিক্ত নোট :

আমার ক্ষেত্রে, CORS কাজ করবে না যতক্ষণ না আমি app.UseCors()উপরে চলে যাই app.UseEndpoints(endpoints => endpoints.MapControllers())


2
আপনি যদি নেট কোর 3 ব্যবহার করছেন তবে এটির উত্তর হওয়া উচিত! আমার জীবন বাঁচানোর জন্য ধন্যবাদ!
কানাডা ওয়ান

2
"এন্ডপয়েন্ট রাউটিংয়ের সাথে, ইউআরআউটিং এবং ইউজএন্ডপয়েন্টগুলিতে কলগুলির মধ্যে সম্পাদনের জন্য অবশ্যই করস মিডলওয়্যারটি কনফিগার করতে হবে Inc ভুল কনফিগারেশন মিডলওয়্যারের সঠিকভাবে কাজ করা বন্ধ করবে" " এখানে ডকস.মাইক্রোসফট.ইন- ইউএস
মার্ক

"এন্ডপয়েন্ট রাউটিংয়ের সাথে, ইউআরআউটিং এবং ইউজএন্ডপয়েন্টগুলিতে কলগুলির মধ্যে সম্পাদনের জন্য অবশ্যই করস মিডলওয়্যারটি কনফিগার করতে হবে Inc ভুল কনফিগারেশন মিডলওয়্যারের সঠিকভাবে কাজ করা বন্ধ করবে" " এখানে ডকস.মাইক্রোসফট.ইন- ইউএস
মার্ক

10
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {      
       app.UseCors(builder => builder
                .AllowAnyHeader()
                .AllowAnyMethod()
                .SetIsOriginAllowed((host) => true)
                .AllowCredentials()
            );
    }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();
    }

.SetIsOriginAllowed ((হোস্ট) => সত্য) এটি আমার জন্য সমাধান করেছে।
জেনসবি

বাহ, সুতরাং আমি এই উত্তরটির আগে কেবলমাত্র 3 টি ভোটের সাথে অন্য যে কোনও উত্তর সম্পর্কে কাজ করার জন্য পুরোপুরি আশা করেছি। তবে আমি প্রত্যেককে সাবধানতার সাথে চেষ্টা করেছিলাম ... ... আমি যখন তোমার জন্য গিয়েছিলাম তখন তা কার্যকর হয়েছিল। আপনাকে ধন্যবাদ
রবার্তো টমস

7

উপরের প্রক্রিয়াগুলির কোনওটিই সহায়তা করেনি এবং আমি তারপরে নিবন্ধটি পড়েছিলাম যা সমস্যার সমাধান করেছে।

নীচে কোড দেওয়া আছে।

public void ConfigureServices(IServiceCollection services)
{
    // Add service and create Policy with options
    services.AddCors(options =>
    {
        options.AddPolicy("CorsPolicy",
            builder => builder.AllowAnyOrigin()
            .AllowAnyMethod()
            .AllowAnyHeader()
            .AllowCredentials() );
    });


    services.AddMvc(); 
}

এবং

public void Configure(IApplicationBuilder app)
{
    // ...

    // global policy - assign here or on each controller
    app.UseCors("CorsPolicy");

এবং আমার ক্রিয়াবাদী এর শীর্ষে

[EnableCors("CorsPolicy")]

2
এটি সম্ভবত একটি খারাপ ধারণা: আপনার একই প্রয়োগের app.UseCors()সাথে মিডলওয়্যার ( ) মিশ্রিত করা উচিত নয় [EnableCors()]। আপনার একটি বা অন্যটি ব্যবহার করা উচিত - তবে উভয়ই নয়: ডকস.মাইক্রোসফট.ইন.ইউএস / এস্পনেট / কোর / সিকিউরিটি / ::Use the [EnableCors] attribute or middleware, not both in the same app.
ফগিডে

4

jQuery.support.cors = true;আজাক্স কল করার আগে যোগ করার চেষ্টা করুন

এটি এমনও হতে পারে যে আপনার এপিআইতে প্রেরণ করা ডেটা অবিশ্বাস্য,

নিম্নলিখিত JSON ফাংশন যুক্ত করার চেষ্টা করুন

        var JSON = JSON || {};

    // implement JSON.stringify serialization
    JSON.stringify = JSON.stringify || function (obj) {

        var t = typeof (obj);
        if (t != "object" || obj === null) {

            // simple data type
            if (t == "string") obj = '"' + obj + '"';
            return String(obj);

        }
        else {

            // recurse array or object
            var n, v, json = [], arr = (obj && obj.constructor == Array);

            for (n in obj) {
                v = obj[n]; t = typeof (v);

                if (t == "string") v = '"' + v + '"';
                else if (t == "object" && v !== null) v = JSON.stringify(v);

                json.push((arr ? "" : '"' + n + '":') + String(v));
            }

            return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}");
        }
    };

    // implement JSON.parse de-serialization
    JSON.parse = JSON.parse || function (str) {
        if (str === "") str = '""';
        eval("var p=" + str + ";");
        return p;
    };

তারপরে আপনার ডেটাতে: অবজেক্ট এটিকে পরিবর্তন করুন

    data: JSON.stringify({
        username: username,
        password: password
    }),

আপনার সাহায্যের জন্য ধন্যবাদ. প্রত্যেকের উত্তর একত্রিত করার পরে সমাধানটি বের করার জন্য অবশ্যই উত্তরটির একটি অংশ অবশ্যই ব্যবহার করেছেন
কিলারিন

4

সহজ সমাধান যোগ করা হয়

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

        app.UseCors(options => options.AllowAnyOrigin());

        app.UseHttpsRedirection();
        app.UseMvc();
    }

শুরু করার জন্য।


3

আমি মনে করি যদি আপনার নিজস্ব ব্যবহার CORS মিডলওয়্যার আপনি করতে হবে নিশ্চিত এটা সত্যিই হয় CORS চেক করে অনুরোধ উৎপত্তি হেডার।

 public class CorsMiddleware
{
    private readonly RequestDelegate _next;
    private readonly IMemoryCache _cache;
    private readonly ILogger<CorsMiddleware> _logger;

    public CorsMiddleware(RequestDelegate next, IMemoryCache cache, ILogger<CorsMiddleware> logger)
    {
        _next = next;
        _cache = cache;
        _logger = logger;
    }
    public async Task InvokeAsync(HttpContext context, IAdministrationApi adminApi)
    {
        if (context.Request.Headers.ContainsKey(CorsConstants.Origin) || context.Request.Headers.ContainsKey("origin"))
        {
            if (!context.Request.Headers.TryGetValue(CorsConstants.Origin, out var origin))
            {
                context.Request.Headers.TryGetValue("origin", out origin);
            }

            bool isAllowed;
            // Getting origin from DB to check with one from request and save it in cache 
            var result = _cache.GetOrCreateAsync(origin, async cacheEntry => await adminApi.DoesExistAsync(origin));
            isAllowed = result.Result.Result;

            if (isAllowed)
            {
                context.Response.Headers.Add(CorsConstants.AccessControlAllowOrigin, origin);
                context.Response.Headers.Add(
                    CorsConstants.AccessControlAllowHeaders,
                    $"{HeaderNames.Authorization}, {HeaderNames.ContentType}, {HeaderNames.AcceptLanguage}, {HeaderNames.Accept}");
                context.Response.Headers.Add(CorsConstants.AccessControlAllowMethods, "POST, GET, PUT, PATCH, DELETE, OPTIONS");

                if (context.Request.Method == "OPTIONS")
                {
                    _logger.LogInformation("CORS with origin {Origin} was handled successfully", origin);
                    context.Response.StatusCode = (int)HttpStatusCode.NoContent;
                    return;
                }

                await _next(context);
            }
            else
            {
                if (context.Request.Method == "OPTIONS")
                {
                    _logger.LogInformation("Preflight CORS request with origin {Origin} was declined", origin);
                    context.Response.StatusCode = (int)HttpStatusCode.NoContent;
                    return;
                }

                _logger.LogInformation("Simple CORS request with origin {Origin} was declined", origin);
                context.Response.StatusCode = (int)HttpStatusCode.Forbidden;
                return;
            }
        }

        await _next(context);
    }

আপনাকে অনেক ধন্যবাদ. আমি প্রায় বাদাম হয়ে গিয়েছিলাম, নিজেকে জিজ্ঞাসা করছিলাম কেন Access-Control-Allow-Originসার্ভার দ্বারা শিরোনাম জারি করা হয়নি। আসলে আমি Originহেডারের মাধ্যমে পোস্টম্যানের মাধ্যমে অনুরোধগুলি প্রেরণ করেছি । এই আমার দিন বাঁচা! (বা কমপক্ষে আমার পূর্বসূরী;))
পল কের্তেসার

2

মাইন্ডিংডাটার উত্তরে আপনার মন্তব্যের ভিত্তিতে, এটি আপনার সিওআরএস এর সাথে কোনও সম্পর্কযুক্ত নয়, এটি ঠিকঠাক কাজ করছে।

আপনার নিয়ামক পদক্ষেপটি ভুল ডেটা ফিরিয়ে দিচ্ছে। এইচটিপিপোড 415 এর অর্থ, "অসমর্থিত মিডিয়া প্রকার"। যখন আপনি হয় নিয়ামকের কাছে ভুল ফর্ম্যাটটি পাস করেন (যেমন এক্সএমএল একটি নিয়ামকের কাছে যা কেবলমাত্র জেসন গ্রহণ করে) বা আপনি কোনও ভুল টাইপ ফিরে আসার পরে (কোনও এক্সট্রোলারে এক্সএমএল ফিরে আসে যা কেবলমাত্র এক্সএমএল ফেরত ঘোষিত হয়)।

পরবর্তীকালে [Produces("...")]আপনার ক্রিয়ায় বিশিষ্টতার একটি চেক অস্তিত্ব


আপনার সাহায্যের জন্য ধন্যবাদ. একটি নতুন সমাধান চেষ্টা করল এবং জসনকে বাইরে পাঠানো হচ্ছে নিয়ে খেলল এবং আমি এটির স্ট্রিংফাই করে কাজ করার পরে এটি কাজ করেছিল
হত্যাকারী

2

আমার জন্য, আমি যে কোডটি ব্যবহার করছিলাম তার সাথে এটির কোনও সম্পর্ক ছিল না। অ্যাজুরের জন্য আমাদের অ্যাপ পরিষেবাটির সেটিংসে যেতে হয়েছিল, পাশের মেনুতে "CORS" এন্ট্রি। সেখানে আমাকে যে ডোমেনটি স্টাফের জন্য অনুরোধ করা হয়েছিল সেটি যুক্ত করতে হয়েছিল। একবার আমি এটি ছিল, সবকিছু ম্যাজিক ছিল।


2

লঞ্চসেটিংস.জেসন-এ, আইসেটেটিংয়ের অধীনে, বেনামে অথ্যানটিকেশনটিকে সত্য হিসাবে সেট করুন:

"iisSettings": {
    "windowsAuthentication": true,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:4200/",
      "sslPort": 0
    }
  }

তারপরে, পরিষেবাদির আগে কনফিগার সার্ভিসগুলির আওতায় স্টার্টআপ.সগুলিতে .এডএমভিসি যোগ করুন:

services.AddCors(options => options.AddPolicy("ApiCorsPolicy", builder =>
{
    builder
        .AllowAnyOrigin()
        .WithHeaders(HeaderNames.AccessControlAllowHeaders, "Content-Type")
        .AllowAnyMethod()
        .AllowCredentials();
}));

এবং তারপরে, অ্যাপ্লিকেশনের আগে কনফিগার পদ্ধতিতে seউপমভিসি () যুক্ত করুন:

app.UseCors("ApiCorsPolicy");

এটি আমার জন্য এটি হয়েছিল, আমি প্রথমে উইন্ডোজ প্রমাণীকরণের জন্য আমার প্রকল্পটি সেটআপ করেছিলাম তবে তারপরে এটি বেনামে পরিবর্তন করতে হয়েছিল, আমার সিওআরএস সঠিকভাবে কনফিগার করা হয়েছিল তবে লঞ্চসেটিংস.জেসনে এই সেটিংটি অপরাধী ছিল, এটি পোস্ট করার জন্য আপনাকে ধন্যবাদ!
এইআরএলএলডি

2

আমি নেট নেট ৩.১ ব্যবহার করছি এবং আমি যখন বুঝতে পারি যে আমার কোডটি আসলে কাজ শুরু করেছে তবে আমার ডিবাগিংয়ের পরিবেশটি ভেঙে গেছে তখন আমি এটির সাথে একটি প্রাচীরের বিরুদ্ধে মাথা বেঁধে যুগে যুগে কাটিয়েছি, সুতরাং আপনি যদি সমস্যা সমাধানের চেষ্টা করছেন তবে এখানে 2 টি ইঙ্গিত রয়েছে সমস্যা:

  1. আপনি যদি এএসপি.এনইটি মিডলওয়্যার ব্যবহার করে প্রতিক্রিয়া শিরোনামগুলিতে লগ করার চেষ্টা করছেন তবে "অ্যাক্সেস-কন্ট্রোল-অলজিন-অরিজিন" শিরোনামটি সেখানে উপস্থিত থাকলেও কখনই প্রদর্শিত হবে না। আমি জানি না কীভাবে তবে পাইপলাইনের বাইরে এটি যুক্ত করা হবে বলে মনে হচ্ছে (শেষ পর্যন্ত এটি দেখার জন্য আমাকে ওয়্যারশার্ক ব্যবহার করতে হবে)।

  2. .NET CORE আপনার অনুরোধে "অরিজিন" শিরোনাম না দিলে প্রতিক্রিয়াতে "অ্যাক্সেস-কন্ট্রোল-মঞ্জুরি-উত্স" প্রেরণ করবে না। পোস্টম্যান এটি স্বয়ংক্রিয়ভাবে সেট করবেন না তাই আপনার নিজের এটি যুক্ত করতে হবে।


1

.NET কোর 3.1

আমার জন্য এবং ডক্স কীভাবে এটি করতে বলেছেন তা নিয়ে কাজ করেছেন:

স্টার্টআপ ক্লাসে:

readonly string MyAllowSpecificOrigins = "_myAllowSpecificOrigins"; 

কনফিগার সার্ভিস () পদ্ধতিতে:

    services.AddCors(options =>
    {
        options.AddPolicy(MyAllowSpecificOrigins,
        builder =>
        {
            builder.WithOrigins("http://example.com",
                                "http://www.contoso.com");
        });
    });

কনফিগার () পদ্ধতিতে:

    app.UseCors(MyAllowSpecificOrigins);  

https://docs.microsoft.com/en-us/aspnet/core/security/cors?view=aspnetcore-3.1



0

কাজ করার জন্য আমি উপরে মাইন্ডিংডাটার উত্তর পেয়েছি, তবে আমাকে মাইক্রোসফ্ট.এএসপনেট.কোর্সগুলির পরিবর্তে মাইক্রোসফ্ট.এএসপনেট.কর্স ব্যবহার করতে হয়েছিল। আমি ভিজুয়াল স্টুডিও 2019 সালে নেট নেট ওয়েব অ্যাপ্লিকেশন এপিআই প্রকল্পটি ব্যবহার করছি


2
দ্রষ্টব্য: আপনার কোনও এএসপি.নেট কর অ্যাপ্লিকেশনটিতে মাইক্রোসফ্ট.এস্পনেট.কর্স ব্যবহার করা উচিত নয়। যদি আপনি। নেট কোর 3.0.০ বা তার বেশি হয়, আপনার সিওআরএসের জন্য কোনও নিউগেট প্যাকেজ মোটেও আমদানি করার দরকার নেই। আপনি যদি। নেট কোর ২.৩ বা তার থেকে কম হন তবে নুগেট থেকে আপনার মাইক্রোসফ্ট.এএসপনেট.কর্সের উপযুক্ত সংস্করণ দরকার।
কুয়াশাডে

0

দ্য

Microsoft.AspNetCore.Cors

আপনাকে অন্তর্নির্মিত বৈশিষ্ট্যগুলি সহ CORS করার অনুমতি দেবে, তবে এটি বিকল্পগুলির অনুরোধটি পরিচালনা করে না। পূর্বের পোস্টে প্রস্তাবিত এখন পর্যন্ত সেরা কাজটি একটি নতুন মিডলওয়্যার তৈরি করছে। উত্তরটি নিম্নলিখিত পোস্টে সঠিক হিসাবে চিহ্নিত হিসাবে চিহ্নিত করুন:

.NET কোর ওয়েব API এ CORS এর জন্য বিকল্পগুলি শিরোনাম সক্ষম করুন


0

এটি করার সহজ এবং সহজ উপায়।

  1. প্যাকেজ ইনস্টল করুন

Install-Package Microsoft.AspNetCore.Cors

  1. Startup.cs ফাইলের নীচে কোডটি রাখুন

app.UseCors(options => options.AllowAnyOrigin());


0

আমার কোডটি এখানে:

  app.Use((ctx, next) =>
        {
            ctx.Response.Headers.Add("Access-Control-Allow-Origin", ctx.Request.Headers["Origin"]);
            ctx.Response.Headers.Add("Access-Control-Allow-Methods", "*");
            ctx.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
            ctx.Response.Headers.Add("Access-Control-Allow-Headers", "AccessToken,Content-Type");
            ctx.Response.Headers.Add("Access-Control-Expose-Headers", "*");
            if (ctx.Request.Method.ToLower() == "options")
            {
                ctx.Response.StatusCode = 204;

                return Task.CompletedTask;
            }
            return next();
        });

0

আমি এখানে এটি কীভাবে করেছি।

আমি দেখতে পাচ্ছি যে কিছু উত্তরে তারা app.UserCors("xxxPloicy")নিয়ামকগুলি সেট করছে এবং রাখছে [EnableCors("xxxPloicy")]। আপনার দুটোই করার দরকার নেই।

পদক্ষেপগুলি এখানে।

কনফিগার সার্ভিসগুলির ভিতরে শুরু করার সময় নিম্নলিখিত কোড যুক্ত করুন।

    services.AddCors(c=>c.AddPolicy("xxxPolicy",builder => {
        builder.AllowAnyOrigin()
        .AllowAnyMethod()
        .AllowAnyHeader();
    }));

আপনি যদি সমস্ত প্রকল্পে প্রয়োগ করতে চান তবে নীচের কোডটি স্টার্টআপ.সিটিতে কনফিগার পদ্ধতিতে যুক্ত করুন

app.UseCors("xxxPolicy");

অথবা

আপনি যদি এটি নির্দিষ্ট নিয়ন্ত্রকদের সাথে যুক্ত করতে চান তবে নীচের মত বর্ণিত কোড কোড সক্ষম করুন।

[EnableCors("xxxPolicy")]
[Route("api/[controller]")]
[ApiController]
public class TutorialController : ControllerBase {}

আরও তথ্যের জন্য: এটি দেখুন


0

CORS শিরোনাম সেট করতে একটি কাস্টম অ্যাকশন / নিয়ন্ত্রক বৈশিষ্ট্য ব্যবহার করুন।

উদাহরণ:

public class AllowMyRequestsAttribute : ControllerAttribute, IActionFilter
{
    public void OnActionExecuted(ActionExecutedContext context)
    {
        // check origin
        var origin = context.HttpContext.Request.Headers["origin"].FirstOrDefault();
        if (origin == someValidOrigin)
        {
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Origin", origin);
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Credentials", "true");
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Headers", "*");
            context.HttpContext.Response.Headers.Add("Access-Control-Allow-Methods", "*");
            // Add whatever CORS Headers you need.
        }
    }

    public void OnActionExecuting(ActionExecutingContext context)
    {
        // empty
    }
}

তারপরে ওয়েব এপিআই কন্ট্রোলার / অ্যাকশনটিতে:

[ApiController]
[AllowMyRequests]
public class MyController : ApiController
{
    [HttpGet]
    public ActionResult<string> Get()
    {
        return "Hello World";
    }
}

0

কেবলমাত্র এখানে উত্তর যুক্ত করার জন্য, আপনি যদি ব্যবহার করছেন app.UseHttpsRedirection(), এবং আপনি এসএসএল পোর্টকে আঘাত করছেন না তবে এটির মন্তব্য করার কথা বিবেচনা করুন।


0

আমি ব্লেজার ওয়েবস্যাবলেট ক্লায়েন্ট এবং এসপ নেট ওয়েব অ্যাপি কোর ব্যাকএন্ড হিসাবে ব্যবহার করছিলাম এবং কর্সের সমস্যাও ছিল।

আমি এই কোড সহ সমাধান পেয়েছি:

আমার এএসপি.নেট কোর ওয়েব এপিআই স্টার্টআপ.cs কনফিগার সার্ভিসেস এবং পদ্ধতিগুলি কনফিগার করুন প্রথম লাইনগুলি এগুলি দেখায়:

public void ConfigureServices(IServiceCollection services)
{
   services.AddCors(options => options.AddPolicy("ApiCorsPolicy", builder =>
   {
        builder.WithOrigins("http://example.com").AllowAnyMethod().AllowAnyHeader();
    }));

 //other code below...
}

এবং আমার কনফিগার পদ্ধতি:

public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    app.UseCors(
        options =>   options.WithOrigins("http://example.com").AllowAnyMethod().AllowAnyHeader()
            );
 //other code below...
}

http://example.comআপনার ক্লায়েন্ট ডোমেন বা আইপি ঠিকানা দিয়ে পরিবর্তন করুন


-1
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2)
                .AddJsonOptions(options => {
                    var resolver = options.SerializerSettings.ContractResolver;
                    if (resolver != null)
                        (resolver as DefaultContractResolver).NamingStrategy = null;
                });

            services.AddDbContext<PaymentDetailContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DevConnection"))); //Dependency Injection
            // options => options.UseSqlServer() Lamda Expression

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

আপনার কোডটি অন্তর্ভুক্ত এবং ব্যাখ্যা করতে এবং আপনার উত্তরগুলি কীভাবে এটি অন্য উত্তর থেকে পৃথক হয় তা ব্যাখ্যা করতে দয়া করে আপনার উত্তরটি সম্পাদনা করুন। এটি আপনার পোস্টটিকে আরও কার্যকর করে তুলবে এবং এটির
উন্নতি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.