প্রশ্ন আমি কিভাবে NGINX অ্যাক্সেস-কন্ট্রোল-অনুমতি-অরিজিন যুক্ত করব?


আমি কিভাবে অ্যাক্সেস-কন্ট্রোল-অনুমতি-মূল শিরোনাম সেট করব যাতে আমি আমার প্রধান ডোমেনে আমার সাবডোমেন থেকে ওয়েব-ফন্ট ব্যবহার করতে পারি?


নোট:

HTML5 এবং BP সার্ভার কনফিগ প্রকল্পগুলিতে সর্বাধিক HTTP সার্ভারগুলির জন্য আপনি এই এবং অন্যান্য হেডারগুলির উদাহরণ পাবেন https://github.com/h5bp/server-configs


133
2017-07-20 22:57


উত্স


আঃ অবশেষে উত্তর অবস্থানটি খুঁজে পেয়েছেন / {add_header অ্যাক্সেস-কন্ট্রোল-অনুমতি-অরিজিন "*"; } - Chris McKee
ng4free.com/... - Jaydeep Gondaliya


উত্তর:


Nginx সঙ্গে সংকলিত করা আছে http://wiki.nginx.org/NginxHttpHeadersModule (উবুন্টু এবং কিছু অন্যান্য লিনাক্স ডিস্ট্রোতে ডিফল্ট)। তারপর আপনি এটা করতে পারেন

location ~* \.(eot|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
}

158
2017-09-01 00:25



অ্যাপাচে একই সমাধান বাস্তবায়ন করতে চাইলে এই নির্দেশাবলী অনুসরণ করুন: stackoverflow.com/questions/11616306/... - camilo_u
যে মডিউল ডিফল্টরূপে অন্তত কম্পাইল করা হয় (অন্তত উবুন্টু উপর)। - Steve Bennett
এছাড়াও অ্যামাজন লিনাক্স রেপো ডিফল্ট দ্বারা সংকলিত - Ross
কোন ফাইল এবং অবস্থানের মধ্যে আমরা এই অবস্থান নির্দেশ করা উচিত? - Sumit Arora
এটা আমার জন্য কাজ করে না। Nginx 1.10.0, উবুন্টু 16.04 - Omid Amraei


আরো আপ টু ডেট উত্তর:

#
# Wide-open CORS config for nginx
#
location / {
     if ($request_method = 'OPTIONS') {
        add_header 'Access-Control-Allow-Origin' '*';
        #
        # Om nom nom cookies
        #
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        #
        # Custom headers and headers various browsers *should* be OK with but aren't
        #
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
        #
        # Tell client that this pre-flight info is valid for 20 days
        #
        add_header 'Access-Control-Max-Age' 1728000;
        add_header 'Content-Type' 'text/plain charset=UTF-8';
        add_header 'Content-Length' 0;
        return 204;
     }
     if ($request_method = 'POST') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }
     if ($request_method = 'GET') {
        add_header 'Access-Control-Allow-Origin' '*';
        add_header 'Access-Control-Allow-Credentials' 'true';
        add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
        add_header 'Access-Control-Allow-Headers' 'DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
     }
}

সূত্র: https://michielkalkman.com/snippets/nginx-cors-open-configuration.html

আপনি যোগ করতে চান Access-Control-Expose-Headers (অ্যাক্সেস-কন্ট্রোল-অনুমতি-হেডার হিসাবে একই বিন্যাসে) আপনার কাস্টম এবং / অথবা 'অ-সরল' হেডারগুলি অ্যাকজ্যাক অনুরোধগুলিতে প্রকাশ করতে।

Access-Control-Expose-Headers (optional) - The XMLHttpRequest 2 object has a 
getResponseHeader() method that returns the value of a particular response 
header. During a CORS request, the getResponseHeader() method can only access 
simple response headers. Simple response headers are defined as follows:

    Cache-Control
    Content-Language
    Content-Type
    Expires
    Last-Modified
    Pragma
 If you want clients to be able to access other headers, you have to use the
 Access-Control-Expose-Headers header. The value of this header is a comma-
 delimited list of response headers you want to expose to the client.

-http://www.html5rocks.com/en/tutorials/cors/

অন্যান্য ওয়েব সার্ভারের জন্য Configs http://enable-cors.org/server.html


29
2017-08-24 11:01



যে কোন উপায় প্রতি অবস্থানের জন্য এই লাইন পুনরাবৃত্তি করতে হবে না? আমরা সার্ভার {} ব্লকের অধীনে রাখতে পারি? - geoyws
@ ইয়াওয়েউস (@ আমি কোন বিজ্ঞপ্তি পাইনি); আপনি অবস্থান উপরে এটি স্থাপন করতে পারে, যে সূক্ষ্ম :) - Chris McKee
অ্যাক্সেস-কন্ট্রোল-এক্সপোজ-হেডারগুলি এখানে অনুপস্থিত - chovy
@chovy এটি একটি ঐচ্ছিক শিরোনাম যা অজেক্সের অনুরোধে অফলাইন প্রকাশ করতে পারে কিন্তু আমি এটি যথাযথভাবে যোগ করা পর্যন্ত লোকেদের তিরস্কার করতে পারি। তোমাকে ধন্যবাদ - Chris McKee
ব্যবহার করা এড়াতে দয়া করে if nginx মধ্যে - এমনকি সরকারী ম্যানুয়াল এটি নিরুৎসাহিত করে। - aggregate1166877


এখানে লেখা নিবন্ধটি যা GET | POST এর জন্য অনুলিপিগুলির কিছু এড়িয়ে চলছে। এটা আপনি Nginx মধ্যে CORS সঙ্গে যেতে হবে।

nginx অ্যাক্সেস নিয়ন্ত্রণ মূল অনুমতি দেয়

পোস্ট থেকে নমুনা স্নিপেট এখানে:

server {
  listen        80;
  server_name   api.test.com;


  location / {

    # Simple requests
    if ($request_method ~* "(GET|POST)") {
      add_header "Access-Control-Allow-Origin"  *;
    }

    # Preflighted requests
    if ($request_method = OPTIONS ) {
      add_header "Access-Control-Allow-Origin"  *;
      add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD";
      add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
      return 200;
    }

    ....
    # Handle request
    ....
  }
}

6
2018-04-17 21:15



এসএফ নীতি অনুযায়ী আপনাকে শুধু এই লিঙ্কটি নয়, এই পোস্টে তথ্যটি অনুলিপি করতে হবে। ওয়েবসাইট যে কোন সময় অদৃশ্য হতে পারে, যা তথ্য হারাবে। - Tim
বৈধ বিন্দু @ টিম, কোড অন্তর্ভুক্ত করার জন্য আপডেট - gansbrest


প্রথমত, আমাকে বলুন @ হেলভিনেজ উত্তরটি আমার জন্য কাজ করছে:

location ~* \.(eot|ttf|woff|woff2)$ {
    add_header Access-Control-Allow-Origin *;
}

যাইহোক, আমি এই প্রশ্নের উত্তরটি আলাদা আলাদাভাবে উত্তর দেওয়ার সিদ্ধান্ত নিয়েছি কারণ সমাধানটি খোঁজার জন্য আরও দশ ঘণ্টারও বেশি সময় লাগানোর পরেই আমি এই সমাধানটি সমাধান করতে পেরেছি।

মনে হচ্ছে Nginx ডিফল্টরূপে কোন (সঠিক) ফন্ট MIME ধরন সংজ্ঞায়িত করে না। অনুসরণ করে এই tuorial আমি খুঁজে পেয়েছি আমি নিম্নলিখিত যোগ করতে পারে:

application/x-font-ttf           ttc ttf;
application/x-font-otf           otf;
application/font-woff            woff;
application/font-woff2           woff2;
application/vnd.ms-fontobject    eot;

আমার দিকে etc/nginx/mime.types ফাইল। হিসাবে বর্ণিত, উপরের সমাধান তারপর কাজ।


6
2018-01-04 15:24



আমি সাধারণত H5BP নেভিগেশন mime টাইপ ফাইল চেক করতে মানুষ নির্দেশ করবে github.com/h5bp/server-configs-nginx/blob/master/mime.types :) - Chris McKee


Nginx এর ঐতিহ্যগত add_header নির্দেশিকা 4xx প্রতিক্রিয়া সঙ্গে কাজ করে না। আমরা এখনও তাদের কাছে কাস্টম হেডার যুক্ত করতে চাই, আমাদের আরও_সাইট_হাইডারস নির্দেশিকা ব্যবহার করতে সক্ষম হতে ngx_headers_more মডিউলটি ইনস্টল করতে হবে, যা 4xx প্রতিক্রিয়াগুলির সাথে কাজ করে।

sudo apt-get install nginx-extras

তারপর ব্যবহার করুন more_set_headers nginx.conf ফাইলের মধ্যে, আমি নীচের আমার নমুনা pasted আছে

server {
    listen 80;
    server_name example-site.com;
    root "/home/vagrant/projects/example-site/public";

    index index.html index.htm index.php;

    charset utf-8;

    more_set_headers 'Access-Control-Allow-Origin: $http_origin';
    more_set_headers 'Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE, HEAD';
    more_set_headers 'Access-Control-Allow-Credentials: true';
    more_set_headers 'Access-Control-Allow-Headers: Origin,Content-Type,Accept,Authorization';

    location / {
        if ($request_method = 'OPTIONS') {
            more_set_headers 'Access-Control-Allow-Origin: $http_origin';
            more_set_headers 'Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE, HEAD';
            more_set_headers 'Access-Control-Max-Age: 1728000';
            more_set_headers 'Access-Control-Allow-Credentials: true';
            more_set_headers 'Access-Control-Allow-Headers: Origin,Content-Type,Accept,Authorization';
            more_set_headers 'Content-Type: text/plain; charset=UTF-8';
            more_set_headers 'Content-Length: 0';
            return 204;
        }
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log off;
    error_log  /var/log/nginx/example-site.com-error.log error;

    sendfile off;

    client_max_body_size 100m;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

2
2018-05-30 10:41





আমার ক্ষেত্রে, Rails 5 ব্যবহার করে, শুধুমাত্র কাজ সমাধান যোগ করা হয়েছে rack-cors মণি। তাই ভালো:

ইন / Gemfile

# Gemfile
gem 'rack-cors'

কনফিগার / initializers / cors.rb মধ্যে

# config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins 'localhost:4200'
    resource '*',
      headers: :any,
      methods: %i(get post put patch delete options head)
  end
end

সূত্র: https://til.hashrocket.com/posts/4d7f12b213-rails-5-api-and-cors


0
2018-05-04 23:07



কিভাবে nginx স্ট্যাটিক ফাইল পরিবেশন করতে সাহায্য করে? - Walf
আমি rails 5 অ্যাপ্লিকেশন পরিবেশন করতে একটি বিপরীত প্রক্সি হিসাবে nginx ব্যবহার করা হয়। এটি একটি বিশেষ ক্ষেত্রে যেখানে CORS সীমাবদ্ধতা nginx থেকে আসছে না কিন্তু এর পিছনে মূল অ্যাপস থেকে। - xyz