Zezwalanie na prośby o wzajemne pochodzenie w Yesod

Moja aplikacja korzysta z bookmarkletu i muszę zezwolić na CORSMyRouteR więc mój kod bookmarklet może używać tej trasy do żądań AJAX.

W moim pierwszym szkicu konfiguracji / tras podałemMyRouteR obsługa tylko jednej metody żądania, PUT. Okazało się jednak (duh), że potrzebuję obsługiwać również metodę OPTIONS, które przeglądarki używają do żądań wstępnej inspekcji CORS.

Skończyło się na następujących konfiguracjach / trasach:

/myroute MyRouteR PUT OPTIONS

Miałem nadzieję, że w szablonie Haskell, który przetwarza konfiguracje / trasy, pojawią się jakieś odpowiednie maszyny, tak że dodanie OPCJI do listy metod na tej trasie spowodowałoby automatyczne wywołanie obsługi CORS, ale bez kości. Nie koniec świata, ale miałby sens i był elegancki w ten sposób.

Aby CORS działał, podałem trasę obsługi OPTIONS:

optionsMyRouteR :: Handler RepPlain
optionsMyRouteR = do
    addHeader "Access-Control-Allow-Origin" "*"
    addHeader "Access-Control-Allow-Methods" "PUT, OPTIONS"
    return $ RepPlain $ toContent ("" :: Text)

putMyRouteR :: Handler RepJson
putMyRouteR = do
    addHeader "Access-Control-Allow-Origin" "*"
    -- more stuff ...

To działa, ale wydaje się, że jest trochę nie-Yesodic, ponieważ jest to bardzo błahostka. Tak więc dwa pytania:

Czy mamy lepszy przymiotnik niż Yesodic?Czy istnieje inny, lepszy sposób, aby trasa obsługiwała żądania wzajemnego pochodzenia?

questionAnswers(1)

yourAnswerToTheQuestion