কর্স: শংসাপত্রগুলির মোডটি 'অন্তর্ভুক্ত'


100

হ্যাঁ, আমি জানি আপনি কী ভাবছেন - এটি আরও একটি কর্স প্রশ্ন, তবে এবার আমি স্ট্যাম্পড।

সুতরাং শুরু করতে, আসল ত্রুটি বার্তা:

এক্সএমএলএইচটিপিআরকোয়েস্ট http: //localhost/Foo.API/token লোড করতে পারে না । অনুরোধের শংসাপত্র মোডে 'অন্তর্ভুক্ত' থাকাকালীন প্রতিক্রিয়াতে 'অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন' শিরোনামের মান অবশ্যই ওয়াইল্ডকার্ড '*' হওয়া উচিত নয় । মূল ' http: // লোকালহোস্ট: 5000 ' এ অ্যাক্সেসের অনুমতি নেই। XMLHttpRequest দ্বারা শুরু করা অনুরোধগুলির শংসাপত্রের মোডটি শংসাপত্রের বৈশিষ্ট্য সহ নিয়ন্ত্রণ করা হয়।

আমি নিশ্চিত নই যে শংসাপত্রগুলির মোড বলতে কী বোঝায় তা 'অন্তর্ভুক্ত' ?

সুতরাং যখন আমি পোস্টম্যানের মধ্যে অনুরোধটি সম্পাদন করি তখন আমি এ জাতীয় কোনও ত্রুটি অনুভব করি না :

এখানে চিত্র বর্ণনা লিখুন

কিন্তু যখন আমি আমার কৌণিক ওয়েব অ্যাপের মাধ্যমে একই অনুরোধটি অ্যাক্সেস করি তখন আমি এই ত্রুটি দ্বারা স্তব্ধ হয়ে যাই ump আমার Angualrjs অনুরোধ / প্রতিক্রিয়া এখানে। আপনি যেমনটি দেখবেন প্রতিক্রিয়াটি রয়েছে OK 200তবে আমি এখনও সিওআরএস ত্রুটি পেয়েছি:

ফিডলারের অনুরোধ এবং প্রতিক্রিয়া:

নিম্নলিখিত চিত্রটি ওয়েব ফ্রন্ট-এন্ড থেকে এপিআই-তে অনুরোধ এবং প্রতিক্রিয়া দেখায়

ফিডলার

সুতরাং আমি অনলাইনে পড়েছি এমন অন্য সমস্ত পোস্টের উপর ভিত্তি করে মনে হচ্ছে যে আমি সঠিক জিনিসটি করছি, এ কারণেই আমি ত্রুটিটি বুঝতে পারি না। শেষ অবধি, আমি Angualrjs (লগইন ফ্যাক্টরি) এর মধ্যে ব্যবহার করা কোডটি এখানে:

এখানে চিত্র বর্ণনা লিখুন

এপিআই-এ CORS বাস্তবায়ন - রেফারেন্স উদ্দেশ্যে:

পদ্ধতি 1 ব্যবহৃত:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        EnableCrossSiteRequests(config);
    }

    private static void EnableCrossSiteRequests(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("*", "*", "*")
        {
            SupportsCredentials = true
        };
        config.EnableCors(cors);
    }
}

পদ্ধতি 2 ব্যবহৃত:

public void Configuration(IAppBuilder app)
{
    HttpConfiguration config = new HttpConfiguration();

    ConfigureOAuth(app);

    WebApiConfig.Register(config);
    app.UseCors(Microsoft.Owin.Cors.CorsOptions.AllowAll);
    app.UseWebApi(config);

}

অগ্রিম ধন্যবাদ!


সুন্দর ছবি, তারা কি? আপনার প্রশ্নের উত্তর দেওয়ার জন্য, আপনি যদি প্রমাণীকরণ অন্তর্ভুক্ত করেন তবে অ্যাক্সেস-নিয়ন্ত্রণ-অনুমতি-উত্স প্রতিক্রিয়া অবশ্যই উত্স (ব্রাউজার পৃষ্ঠা) হোস্ট হতে পারে , এটি হতে পারে না* - সুতরাং, সার্ভার সাইডটি কর্সকে ভুল করছে - ওহ, এবং পোস্টম্যান কাজ করে কারণ এটি কোনও ক্রস উত্সের অনুরোধ নয়
জারোমন্ডা এক্স

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

আমার মন্তব্যটি আপনার যা জানা দরকার তা হওয়া উচিত - ছবিগুলি দেখার দরকার নেই
জারোমন্ডা এক্স

তাই সম্প্রতি আমি আমার ওয়েব এপিআই-তে কুকিজ থেকে দূরে সরিয়ে টোকেন ব্যবহার করার সিদ্ধান্ত নিয়েছি। যখন আমি কুকি ব্যবহার করি, আমার CORS কোনও সমস্যা ছাড়াই কাজ করে। সুতরাং আমি কীভাবে সার্ভারের দিকে
রিচার্ড বেইলি

4
আপনি যদি প্রমাণীকরণ অন্তর্ভুক্ত করেন তবে access-control-allow-originপ্রতিক্রিয়াটি অবশ্যই উত্স (ব্রাউজার পৃষ্ঠা) হোস্টের হতে হবে, এটি হতে পারে না*
জারোমন্ডা এক্স

উত্তর:


103

সমস্যাটি আপনার কৌণিক কোড থেকে উদ্ভূত হয়েছে:

কখন withCredentialsসত্যতে সেট করা থাকে, এটি অনুরোধের সাথে শংসাপত্র বা কুকিজ প্রেরণের চেষ্টা করছে। এর অর্থ হ'ল অন্য উত্স সম্ভাব্যরূপে অনুমোদিত অনুরোধগুলি করার চেষ্টা করছে, ওয়াইল্ডকার্ড ("*") "অ্যাক্সেস-নিয়ন্ত্রণ-অনুমতি দিন" উত্সাহীন হিসাবে অনুমোদিত নয়।

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

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

আমি এই নিবন্ধটিতে এই জিনিসটি ব্যাখ্যা করছি আমি কিছুক্ষণ আগে লিখেছিলাম।

সুতরাং আপনি হয় মিথ্যাতে সেট করতে পারেন withCredentialsবা একটি অরিজিনাল শ্বেতলিস্ট বাস্তবায়ন করতে পারেন এবং যখনই শংসাপত্রগুলি জড়িত থাকে তখন কোনও বৈধ উত্স সহ সিওআরএস অনুরোধগুলিতে প্রতিক্রিয়া জানাতে পারেন


4
আমি টাইপস্ক্রিপ্ট সহ কৌনিক 5 অ্যাপ্লিকেশন উপর কাজ করছি। আমাকে সত্যিকারের সাথে প্রত্যয় দেওয়া দরকার অন্যথায় আমি অনুমোদন ব্যর্থ ব্যতিক্রম পাব। এটি কীভাবে প্রত্যাহারগুলি সহ সমাধান করবেন: সত্য
জিগ্লার

@ জিগলার আমারও একই অবস্থা ছিল। আপনি কি সমাধান খুঁজে পাচ্ছেন?
পাভেল

@ জিগলার আমি জরিমানা সমাধান আমার উত্তর দেখুন।
পাভেল

4
উইথসিডেনটিসালস = ট্রু এবং অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন = [' লোকালহোস্ট: 4200'] ব্যবহার করার সময় আমি এখনও এই ত্রুটিটি পাচ্ছি এবং ত্রুটি বার্তাটির কোনও অর্থ নেই I ত্রুটি বার্তা: "প্রিফলাইট অনুরোধের প্রতিক্রিয়া অ্যাক্সেস নিয়ন্ত্রণ চেককে পাস করে না: প্রতিক্রিয়াতে 'অ্যাক্সেস-কন্ট্রোল-অলজিন-অরিজিন' শিরোনামের মান ওয়াইল্ডকার্ড হওয়া উচিত নয় * যখন অনুরোধের শংসাপত্রগুলির মোড 'অন্তর্ভুক্ত' থাকে। মূল ' লোকালহোস্ট: 4200 ' তাই অ্যাক্সেসের অনুমতি নেই X এক্সএমএলএইচটিপিআরকুয়েস্টের সূচিত অনুরোধগুলির শংসাপত্র মোডটি শংসাপত্রের অ্যাট্রিবিউট দ্বারা নিয়ন্ত্রিত হয়। "
mruanova

@ এমরুয়ানোয়া আপনি কি নিশ্চিত যে অনুরোধে অ্যাক্সেস-কন্ট্রোল-অলজন-অরিজিন শিরোনামটি সঠিকভাবে সেট করা আছে? দেখে মনে হচ্ছে কোথাও কোনও ওয়াইল্ডকার্ডের সাথে কিছু পাঠানো হয়েছে
5

14

আপনি যদি কর্নার মিডলওয়্যার ব্যবহার করছেন এবং আপনি withCredentialsবুলিয়ান সত্য পাঠাতে চান তবে আপনি CORS এর মতো কনফিগার করতে পারেন:

var cors = require('cors');    
app.use(cors({credentials: true, origin: 'http://localhost:5000'}));

`


4
লাইফসেভার উত্তর। +1 এর জন্য
নিশারগ শাহ

4
আমি সারা দিন এই সমস্যাটি সমাধান করার চেষ্টা করছি। তুমিই ত্রাণকর্তা!
হাসান শেফা ওজালপ

11

৫ টি এবং স্প্রিং সিকিউরিটির (কুকি বেস সমাধান) জন্য CORS কাস্টমাইজ করা

কৌণিক দিকে withCredentials: trueকুকি পরিবহনের জন্য বিকল্প পতাকা যুক্ত করার প্রয়োজন :

constructor(public http: HttpClient) {
}

public get(url: string = ''): Observable<any> {
    return this.http.get(url, { withCredentials: true });
}

জাভা সার্ভার-সাইডে CorsConfigurationSourceকনফিগারেশন CORS নীতি যোগ করার প্রয়োজন :

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Bean
    CorsConfigurationSource corsConfigurationSource() {
        CorsConfiguration configuration = new CorsConfiguration();
        // This Origin header you can see that in Network tab
        configuration.setAllowedOrigins(Arrays.asList("http:/url_1", "http:/url_2")); 
        configuration.setAllowedMethods(Arrays.asList("GET","POST"));
        configuration.setAllowedHeaders(Arrays.asList("content-type"));
        configuration.setAllowCredentials(true);
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.cors().and()...
    }
}

পদ্ধতি configure(HttpSecurity http)ডিফল্ট ব্যবহার করবে দ্বারা corsConfigurationSourceজন্যhttp.cors()


1

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

if ('withCredentials' in xhr) {
 xhr.withCredentials = true;
}

আমি এই তিনটি লাইন অপসারণ করার পরে, অ্যাপ্লিকেশনটি প্রত্যাশা অনুযায়ী, দুর্দান্ত কাজ করেছে।

আশা করি এটা সাহায্য করবে!


ধন্যবাদ ... এটি আমার অনেক সময় বাঁচিয়েছে! :)
পবন কুমার চৈতন্য

1

আপনি যদি .NET কোর ব্যবহার করছেন তবে আপনাকে স্টার্টআপ.সিএসগুলিতে CORS কনফিগার করার সময় .AllCredentials () করতে হবে।

কনফিগার সার্ভিসগুলির ভিতরে

services.AddCors(o => {
    o.AddPolicy("AllowSetOrigins", options =>
    {
        options.WithOrigins("https://localhost:xxxx");
        options.AllowAnyHeader();
        options.AllowAnyMethod();
        options.AllowCredentials();
    });
});

services.AddMvc();

তারপরে কনফিগার এর ভিতরে:

app.UseCors("AllowSetOrigins");
app.UseMvc(routes =>
    {
        // Routing code here
    });

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

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