【问题标题】:Service CORS and Route Attributes服务 CORS 和路由属性
【发布时间】:2014-03-11 18:11:11
【问题描述】:

我启用了 CORS 功能。我发现如果我没有:

[Route("/cors_endpoint", "GET, OPTIONS")]

根据我的请求 dto,然后我得到 404。

当我使用CorsFeature 和下面的PreRequestFilter 时,我不明白这个 404 来自哪里。 (我也有身份验证属性,但我正在使用它进行无状态身份验证)。

Plugins.Add(new CorsFeature());
PreRequestFilters.Add((req, res) => {
    if (req.Method == "OPTIONS")
    {
         res.StatusCode = 200; //my hack
         res.EndRequest();
    }
});

有什么想法吗? PS。仍在 3.9.x 上

编辑: 我真正的问题可能应该是:

[Route("/cors_endpoint", "GET")]

这给出了 404,并且根本没有命中 PreRequestFilter。为什么?

【问题讨论】:

    标签: servicestack cors servicestack-bsd


    【解决方案1】:

    “新 API”更改引入了更多 HTTP 动词签名。尝试添加服务选项方法。

    public class ReqstarsService : Service
    {
        [EnableCors]
        public void Options(Reqstar request) {}
    }
    

    【讨论】:

    • 我喜欢这个 - 通常我会创建一个空的 Options() 方法。删除 PreRequestFilters 上的 'hack' 并让 Options() 方法返回。
    • 这意味着向每个服务添加一些东西,我宁愿避免
    • 实际上,这是不必要的......只要我的路线属性中有“OPTIONS”,它就可以工作。
    猜你喜欢
    • 1970-01-01
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 2015-03-22
    • 2016-12-17
    • 2017-07-24
    • 2014-08-27
    • 2013-11-28
    相关资源
    最近更新 更多