using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; namespace ChatRoomServer.Www.Controllers { using System.Data.Entity; using System.Text.RegularExpressions; using System.Threading.Tasks; using System.Web.Mvc.Filters; using ChatRoomServer.Db; using FSLib.MvcWeb; using FSLib.Network.Http; public class AnnouncementController : Controller { /// /// Called when authorization occurs. /// /// Information about the current request and action. protected override void OnAuthentication(AuthenticationContext filterContext) { base.OnAuthentication(filterContext); var origin = filterContext.RequestContext.HttpContext.Request.Headers["Origin"]; if (!origin.IsNullOrEmpty()) { if (!Regex.IsMatch(origin, @"\.?(fishlee\.net|liebao\.cn)$", RegexOptions.IgnoreCase | RegexOptions.Singleline)) { filterContext.Result = new EmptyResult(); } else { Response.Headers["Access-Control-Allow-Origin"] = origin; } } } [AllowAnonymous] [HttpGet, OutputCache(Duration = 1200, VaryByHeader = "Origin")] public async Task List() { var client = new HttpClient(); var ctx = client.Create(HttpMethod.Get, $"http://{Request.Url.Host}:{Request.Url.Port}/api/announcement/list"); await ctx.SendTask(); return Content(ctx.Result, "application/json"); } } }