Skip to content

Commit

Permalink
Allow configuring CORS when running webhost locally. Fixes #1012
Browse files Browse the repository at this point in the history
  • Loading branch information
ahmelsayed committed Jan 4, 2017
1 parent dea1a55 commit 60a6aee
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 11 deletions.
16 changes: 16 additions & 0 deletions src/WebJobs.Script.Cli/Actions/HostActions/StartHostAction.cs
Expand Up @@ -6,13 +6,16 @@
using System.IO;
using System.Linq;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.ServiceModel;
using System.Threading.Tasks;
using System.Web.Http;
using System.Web.Http.Cors;
using System.Web.Http.SelfHost;
using Colors.Net;
using Fclp;
using Microsoft.Azure.WebJobs.Script.WebHost;
using Microsoft.Azure.WebJobs.Script.WebHost.Common;
using Microsoft.Azure.WebJobs.Script.WebHost.Kudu;
using Newtonsoft.Json.Linq;
using WebJobs.Script.Cli.Common;
Expand All @@ -36,6 +39,8 @@ class StartHostAction : BaseAction, IDisposable

public TraceLevel ConsoleTraceLevel { get; set; }

public string CorsOrigins { get; set; }

public override ICommandLineParserResult ParseArgs(string[] args)
{
Parser
Expand All @@ -56,6 +61,12 @@ public override ICommandLineParserResult ParseArgs(string[] args)
.SetDefault(DefaultDebugLevel)
.Callback(p => ConsoleTraceLevel = p);

Parser
.Setup<string>("cors")
.WithDescription($"A comma separated list of CORS origins with no spaces. Example: https://functions.azure.com,https://functions-staging.azure.com")
.SetDefault(LocalhostConstants.AzureFunctionsCors)
.Callback(c => CorsOrigins = c);

return Parser.Parse(args);
}

Expand All @@ -70,6 +81,11 @@ public override async Task RunAsync()
TransferMode = TransferMode.Streamed
};

var cors = new EnableCorsAttribute(CorsOrigins, "*", "*");
config.EnableCors(cors);
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());

var settings = SelfHostWebHostSettingsFactory.Create(NodeDebugPort, ConsoleTraceLevel);

Environment.SetEnvironmentVariable("EDGE_NODE_PARAMS", $"--debug={settings.NodeDebugPort}", EnvironmentVariableTarget.Process);
Expand Down
4 changes: 4 additions & 0 deletions src/WebJobs.Script.Cli/WebJobs.Script.Cli.csproj
Expand Up @@ -150,6 +150,10 @@
<HintPath>..\..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Web.Http.Cors, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\packages\Microsoft.AspNet.WebApi.Cors.5.2.3\lib\net45\System.Web.Http.Cors.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Web.Http.SelfHost, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\..\packages\Microsoft.AspNet.WebApi.SelfHost.5.2.3\lib\net45\System.Web.Http.SelfHost.dll</HintPath>
<Private>True</Private>
Expand Down
1 change: 1 addition & 0 deletions src/WebJobs.Script.Cli/packages.config
Expand Up @@ -10,6 +10,7 @@
<package id="Microsoft.AspNet.Cors" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.Cors" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.AspNet.WebApi.SelfHost" version="5.2.3" targetFramework="net46" />
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net46" />
<package id="Microsoft.Azure.WebJobs" version="2.0.0-beta2-10485" targetFramework="net46" />
Expand Down
11 changes: 0 additions & 11 deletions src/WebJobs.Script.WebHost/App_Start/WebApiConfig.cs
Expand Up @@ -4,15 +4,12 @@
using System;
using System.IO;
using System.Net.Http;
using System.Net.Http.Formatting;
using System.Web;
using System.Web.Http;
using System.Web.Http.Cors;
using System.Web.Http.Routing;
using Autofac;
using Autofac.Integration.WebApi;
using Microsoft.Azure.WebJobs.Script.Config;
using Microsoft.Azure.WebJobs.Script.WebHost.Common;
using Microsoft.Azure.WebJobs.Script.WebHost.Controllers;
using Microsoft.Azure.WebJobs.Script.WebHost.Handlers;

Expand Down Expand Up @@ -43,14 +40,6 @@ public static class WebApiConfig
settingsManager = settingsManager ?? ScriptSettingsManager.Instance;
settings = settings ?? GetDefaultSettings(settingsManager);

if (settings.IsSelfHost)
{
var cors = new EnableCorsAttribute(LocalhostConstants.AzureFunctionsCors, "*", "*");
config.EnableCors(cors);
config.Formatters.Clear();
config.Formatters.Add(new JsonMediaTypeFormatter());
}

var builder = new ContainerBuilder();
builder.RegisterApiControllers(typeof(FunctionsController).Assembly);
AutofacBootstrap.Initialize(settingsManager, builder, settings, config);
Expand Down

0 comments on commit 60a6aee

Please sign in to comment.