我有一个使用 web-server
的 Racket Web 服务器,有没有办法启用跨源资源共享 (CORS)?
最佳答案
是的!
CORS 策略是使用响应上的 HTTP header 建立的。如您所知,在 Racket Web 服务器中,HTTP 响应值是 response 的实例。 struct,您通常通过诸如 response/xexpr
或 response/output
之类的高级函数来构造该结构。您想要设置的 header 具体取决于您的应用程序,但这里有一个简单的示例:
(response/output
#:mime-type #"text/javascript"
#:headers (list (header #"Access-Control-Allow-Origin" #"*"))
(λ (out)
(write-bytes #"console.log('Hi, world!')\n" out)))
在真实的 Web 应用程序中,您可能希望生成多个具有相同 header 的响应。我通常围绕 response/output
、response/xexpr
等制作一些包装函数,以添加特定于我的应用程序的逻辑。如果您正在提供一堆需要 CORS header 的静态文件,您可能需要在 web-server/dispatchers/dispatch-files 上构建模块。
关于http - 在 Racket servlet 上启用 CORS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53907505/