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.Http.Cors; 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 OnAuthorization(AuthorizationContext filterContext) { base.OnAuthorization(filterContext); var origin = filterContext.RequestContext.HttpContext.Request.Headers["Origin"]; if (!origin.IsNullOrEmpty()) { if (!Regex.IsMatch(origin, @"^https?://.*?\.(fishlee\.net|liebao\.cn)$", RegexOptions.IgnoreCase)) { filterContext.Result = new EmptyResult(); return; } filterContext.HttpContext.Response.AppendHeader("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"); } } }