首页 > 解决方案 > 在 Racket servlet 上启用 CORS

问题描述

我有一个使用 Racket 的 Web 服务器web-server,有没有办法启用跨源资源共享 (CORS)?

标签: httpservercorsracket

解决方案


是的!

使用响应上的 HTTP 标头建立 CORS 策略。如您所知,在 Racket Web 服务器中,HTTP 响应值是响应结构的实例,您通常通过更高级别的函数(如response/xexpror )来构造它response/output。您要设置的确切标题取决于您的应用程序,但这里有一个简单的示例:

(response/output
 #:mime-type #"text/javascript"
 #:headers (list (header #"Access-Control-Allow-Origin" #"*"))
 (λ (out)
   (write-bytes #"console.log('Hi, world!')\n" out)))

在真实的 Web 应用程序中,您可能希望生成多个具有相同标头的响应。response/output我通常围绕,等创建一些包装函数response/xexpr,以添加特定于我的应用程序的逻辑。如果您正在提供一堆需要 CORS 标头的静态文件,您可能希望在web-server/dispatchers/dispatch-files模块上构建。


推荐阅读