المكون الإضافي لمتطلبات Rails SSL - ألا يجب عليه التحقق لمعرفة ما إذا كنت في وضع الإنتاج قبل إعادة التوجيه إلى https؟
-
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 دائم؛