首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在扇/ afBedSheet REST服务中启用跨源资源共享(CORS)?

如何在扇/ afBedSheet REST服务中启用跨源资源共享(CORS)?
EN

Stack Overflow用户
提问于 2016-02-09 21:52:19
回答 1查看 44关注 0票数 1

我正在用范汤姆afBedSheet开发REST。我需要允许跨源资源共享,这样我就可以通过AJAX从UI调用我的RESTful服务,该UI运行在不同端口上的不同web容器上。

我目前正在请求处理程序方法中这样做:

代码语言:javascript
复制
    res.headers["Access-Control-Allow-Origin"] = "http://localhost:8080"

但是,随着API的增长和请求处理程序数量的增加,它不再实用了。我想知道如何在每个响应中插入这个标题。我在谷歌上搜索了这个问题,但只找到了一个来自非常老版本的afBedSheet的文档的引用,而这个文档似乎已经不再有意义了。谁能举个例子吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 00:10:47

CORS必须手动设置,但正如前面提到的,这并不困难。在请求处理程序方法中成为重复的任何东西通常都可以保存在某个地方,而设置HTTP响应头也没有什么不同。这些可以通过BedSheet中间件设置

代码语言:javascript
复制
using afIoc
using afBedSheet

const class CorsMiddleware : Middleware {
    @Inject private const HttpRequest           req
    @Inject private const HttpResponse          res
    @Inject private const ResponseProcessors    processors

    new make(|This|in) { in(this) } 

    override Void service(MiddlewarePipeline pipeline) {
        // echo back in the response, whatever was sent in the request
        res.headers["Access-Control-Allow-Origin"]  = req.headers["Origin"]
        res.headers["Access-Control-Allow-Methods"] = req.headers["Access-Control-Request-Method"]
        res.headers["Access-Control-Allow-Headers"] = req.headers["Access-Control-Request-Headers"]

        // deal with any pre-flight requests
        if (req.httpMethod == "OPTIONS")
            processors.processResponse(Text.fromPlain("OK"))
        else
            pipeline.service
    }
}

请注意,上面的内容将启用上的所有请求的CORS --对于开发人员来说非常方便,但是对于活动代码,您应该更加挑剔,并验证任何给定的源程序、方法和标题。

BedSheet Middleware应该贡献给MiddlewarePipeline服务:

代码语言:javascript
复制
@Contribute { serviceType=MiddlewarePipeline# }
static Void contributeMiddleware(Configuration config) {
    config.set("myApp.cors", config.autobuild(CorsMiddleware#)).before("afBedSheet.routes")
}

注意,CorsMiddleware是在BedSheet路由之前插入到管道中的,以确保它得到执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35302909

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档