[英]Enable CORS on Azure Mobile Serivce .NET Backend
我修改了一个ASP.NET Web API 2项目以使用Microsoft Azure Mobile Servies。 我正在开发一个Phonegap应用程序并使用我的桌面Chrome浏览器和本地运行的Azure移动服务对其进行测试。
在我“转换”我的项目之前,我在我的启动代码中使用这行代码处理CORS(需要NuGet包Microsoft.AspNet.WebApi.Cors):
#if DEBUG
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
#if DEBUG
config.MapHttpAttributeRoutes();
...
这就像一个魅力,Chrome的必需标题已写入响应没有问题。
现在使用Azure Mobile Serives,代码如下所示:
public static void Register()
{
ConfigOptions options = new ConfigOptions();
HttpConfiguration config = ServiceConfig.Initialize(new ConfigBuilder(options));
#if DEBUG
var cors = new EnableCorsAttribute("*", "*", "*");
config.EnableCors(cors);
#endif
}
现在我的CORS设置不再起作用,没有标题存在。 在web.config中添加标题有效,但我更喜欢编程方法。
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
</customHeaders>
</httpProtocol>
...
有任何想法吗?
问题是CORS在ASP.NET Web API HttpConfiguration中使用了一个特殊的钩子,.NET后端过早触发,因此没有初始化。
我们会解决这个问题,但这是一个解决方法:
你可以在这里找到一些示例代码: https : //gist.github.com/HenrikFrystykNielsen/6c934be6c6c8fa9e4bc8
希望这可以帮助,
亨里克
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.