المكون الإضافي لمتطلبات Rails SSL - ألا يجب عليه التحقق لمعرفة ما إذا كنت في وضع الإنتاج قبل إعادة التوجيه إلى https؟

StackOverflow https://stackoverflow.com/questions/97468

  •  01-07-2019
  •  | 
  •  

سؤال

ألق نظرة على البرنامج المساعد ssl_requirement.

ألا ينبغي أن يتحقق لمعرفة ما إذا كنت في وضع الإنتاج؟نحن نشهد إعادة توجيه إلى https في وضع التطوير، وهو ما يبدو غريبًا.أم أن هذا هو السلوك الطبيعي للبرنامج المساعد؟اعتقدت أنها تصرفت بشكل مختلف في الماضي.

هل كانت مفيدة؟

المحلول

أعتقد أنهم يعتقدون أنه ربما ينبغي عليك استخدام HTTPS (ربما مع شهادة موقعة ذاتيًا) في وضع التطوير.إذا لم يكن هذا هو السلوك المرغوب فيه، فلا يوجد ما يمنعك من سلوك غلاف SSL الخاص في بيئة التطوير بنفسك:

class YourController < ApplicationController
  ssl_required :update unless Rails.env.development?
end

نصائح أخرى

  def ssl_required?
    return false if local_request? || RAILS_ENV == 'test' || RAILS_ENV == 'development'
    super
  end

من الناحية المثالية، يجب أن تختبر أن تطبيقك يعيد التوجيه إلى https خلال المراحل الحساسة.

ليس هناك فائدة كبيرة في طلب SSL في بيئة التطوير.

يمكنك إيقاف المكونات الإضافية ssl_required؟ الطريقة باستخدام مرافق السخرية المضمنة في Rails.

ضمن الدليل الجذر للتطبيق الخاص بك، قم بإنشاء ملف test/mocks/development/application.rb

require 'controllers/application_controller'

class ApplicationController < ActionController::Base
  def ssl_required?
    false
  end
end

بهذه الطريقة لا تكون SSL مطلوبة أبدًا في بيئة التطوير.

في الواقع، إعادة التوجيه عبر https هي مسؤولية خادم الويب.تعد إضافة التحقق من تجزئة الطلب الإضافي لكل طلب في Rails بمثابة عبء إضافي على IMHO.لقد كتبت نجينكس التكوين, ، والتي تتضمن إعادة الكتابة التالية:

أعد كتابة ^(.*) https://$host$1 دائم؛

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top