diff --git a/Apewer/Web/ApiProcessor.cs b/Apewer/Web/ApiProcessor.cs index 7ae4493..5a34d5d 100644 --- a/Apewer/Web/ApiProcessor.cs +++ b/Apewer/Web/ApiProcessor.cs @@ -124,6 +124,13 @@ namespace Apewer.Web // 寻找入口。 void Invoke() { + // OPTIONS + if (_context.Request.Method == HttpMethod.OPTIONS) + { + _context.Response.Model = new ApiTextModel(""); + return; + } + // 路由 if (_context.Options.UseRoute) { @@ -134,7 +141,6 @@ namespace Apewer.Web { _context.ApiAction = action; Invoke(action); - _context.Response.Duration = Duration(_context.Beginning); return; } } @@ -145,7 +151,6 @@ namespace Apewer.Web var appName = _context.Request.Application; var application = _context.Entries.GetApplication(appName); Invoke(application); - _context.Response.Duration = Duration(_context.Beginning); return; } @@ -580,7 +585,7 @@ namespace Apewer.Web } // Content-Type 检查。 - if (options.WithContentTypeOptions || options.Default != null) + if (options.WithContentTypeOptions) { merged.Add("X-Content-Type-Options", "nosniff"); } diff --git a/Apewer/Web/ApiUtility.cs b/Apewer/Web/ApiUtility.cs index 4e8c8d9..79356d8 100644 --- a/Apewer/Web/ApiUtility.cs +++ b/Apewer/Web/ApiUtility.cs @@ -547,6 +547,15 @@ namespace Apewer.Web Error(context.Response, text); } + /// 渲染为 JSON,并设置到 Response 的 Data 属性。 + public static void SetCamelJsonToResponseData(ApiContext context, object result) + { + if (context == null) return; + if (context.Response == null) return; + if (result == null) return; + context.Response.Data = Json.From(result).Camel(); + } + #endregion #region ApiRequest