404 টি প্রতিক্রিয়ার জন্য এনগিনেক্সে ক্রস অরিজিন অনুরোধগুলি (সিওআরএস) মঞ্জুরি দেওয়া হচ্ছে


26

আমি এই প্রশ্নটিতে বর্ণিত কৌশলটি ব্যবহার করে CORS অনুরোধের জবাবে স্থির ফাইলগুলি পরিবেশন করতে Nginx ব্যবহার করছি । যাইহোক, যখন ফাইলটি বিদ্যমান না থাকে 404 প্রতিক্রিয়াটিতে Access-Control-Allow-Origin: *শিরোনাম থাকে না এবং তাই ব্রাউজার দ্বারা ব্লক করা হয়।

আমি কীভাবে Access-Control-Allow-Origin: *404 টি প্রতিক্রিয়া পাঠাতে পারি ?

উত্তর:


35

যদিও এটি অনেক আগে জিজ্ঞাসা করা হয়েছিল, আমি আরও মডিউল দিয়ে এনজিএনএক্স সংকলন করছিলাম, তবে এনগিনেক্সের নতুন সংস্করণ সহ, আমি পেয়েছি আমার কাস্টম এনগিনেক্সের সংকলন করতে হবে না, আমার যা দরকার তা ছিল alwaysনির্দেশনা যুক্ত করা।

http://nginx.org/en/docs/http/ngx_http_headers_module.html

Syntax: add_header name value [always];

সর্বদা প্যারামিটার নির্দিষ্ট করা থাকলে (1.7.5), শিরোনাম ক্ষেত্রটি প্রতিক্রিয়া কোড নির্বিশেষে যুক্ত করা হবে।

সুতরাং CORS শিরোনামগুলির একটি সুরযুক্ত সংস্করণ :

            if ($cors = "trueget") {
                    # Tells the browser this origin may make cross-origin requests
                    # (Here, we echo the requesting origin, which matched the whitelist.)
                    add_header 'Access-Control-Allow-Origin' "$http_origin" always;

                    # Tells the browser it may show the response, when XmlHttpRequest.withCredentials=true.
                    add_header 'Access-Control-Allow-Credentials' 'true' always;
            }

2
alwaysচাবি ছিল। আমাকে এটি নির্দেশ করার জন্য আপনাকে ধন্যবাদ, আমি পাগল হয়ে যাচ্ছিলাম!
বগন্ডি

11

আমি ধরে নিচ্ছি যে আপনি বর্তমানে add_headerনির্দেশিকা ব্যবহার করছেন । ডকুমেন্টেশন নোট করে যে এটি কেবল 200, 204, 301, 302 এবং 304 স্থিতির কোডের জন্য শিরোনাম সেট করে। 404 স্থিতি কোডগুলির জন্য শিরোনাম সেট করতে আপনাকে শিরোনাম_মডিউলmore_set_headers থেকে মডিউলটি ব্যবহার করতে হবে (এই মডিউলটি পেতে আপনাকে nginx পুনরায় কম্পাইল করতে হতে পারে)। নিম্নলিখিত সমস্ত স্থিতি কোডের জন্য শিরোনাম সেট করবে:

more_set_headers 'Access-Control-Allow-Origin: *';

আপনি এটিকে নির্দিষ্ট স্থিতি কোডগুলিতেও সীমাবদ্ধ রাখতে পারেন:

more_set_headers -s '404' 'Access-Control-Allow-Origin: *';
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.