برنامه نویسی

وب سرور مینیمالیستی برای فایل های استاتیک با کریستال

مسئله

یک وب سرور کراس پلتفرم بسازید تا فایل های ثابت را در پوشه محلی ارائه دهد.
فایل های محلی HTML، CSS و JS را بدون خطای CORS آزمایش کنید1.

بسیاری از مرورگرها، از جمله فایرفاکس و کروم، اکنون همه فایل های محلی را به عنوان منشأ مبهم (به طور پیش فرض) در نظر می گیرند. در نتیجه، بارگیری یک فایل محلی با منابع محلی شامل خطاهای CORS منجر می شود.

راه حل ها

کتابخانه استاندارد کریستال به سرور HTTP اجازه می دهد تا درخواست ها را پردازش کند2.

استاندارد

یک سرور را اجرا کنید http://127.0.0.1:8080 برای ارائه فایل ها از دایرکتوری محلی.

# server.cr
require "http/server"

def run(host="127.0.0.1", port=8080, local=".")
    server = HTTP::Server.new([
      HTTP::ErrorHandler.new,
      HTTP::LogHandler.new,
      HTTP::CompressHandler.new,
      HTTP::StaticFileHandler.new(local),
    ])

    address = server.bind_tcp host, port
    puts "Listening on http://#{address}"
    server.listen
end

run
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

$ crystal run server.cr
Listening on http://127.0.0.1:8080
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

مینیمالیست

البته، شما می خواهید آن را در همه جا بدون ایجاد فایل های اضافی اجرا کنید:

$ crystal eval -p 'require "http/server"; HTTP::Server.new([HTTP::StaticFileHandler.new(".")]).listen(8080)'
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

منابع


  1. دلیل: درخواست CORS نه HTTP: در حال بارگیری یک فایل محلی ↩

  2. کریستال: کلاس HTTP::سرور ↩

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا