表示配置注释中的以下信息:
// Setup the CORS middleware to run before SignalR.
// By default this will allow all origins. You can
// configure the set of origins and/or http verbs by
// providing a cors options with a different policy.
map.UseCors(CorsOptions.AllowAll);
Run Code Online (Sandbox Code Playgroud)
但是,System.Web.CorsPolicy的Origins属性有一个私有的setter,没有允许注入源的构造函数,也没有暴露的setter方法.关于Origins列表,它似乎只暴露了一个"AllowAllOrigins"属性,然后是一个无用的Origins getter,它只反映出在CorsPolicy构造过程中构造的空List.
特别值得注意的是,默认的app.UseCors(CorsOptions.AllowAll)设置完全不连贯.通过它自己的工具提示,它是"允许所有标题,所有方法,任何来源和支持凭证的策略."
A wildcard '*' cannot be used in the 'Access-Control-Allow-Origin' header when the credentials flag is true
Run Code Online (Sandbox Code Playgroud)
我的配置目前是"愚蠢的简单"SignalR配置
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以提供一个Microsoft.Owin.Cors.CorsMiddleware示例,该示例将使用Access-Control-Allow-Origin的显式白名单重新实现"AllowAll"选项吗?
你看过源了CorsOptions.AllowAll吗?它显示了如何CorsOptions创建.你可以做点什么
var policy = new CorsPolicy
{
AllowAnyHeader = true,
AllowAnyMethod = true,
AllowAnyOrigin = false, // False by default, just left it here.
SupportsCredentials = true
};
policy.Origins.Add("http://foo.example.com");
app.UseCors(new CorsOptions
{
PolicyProvider = new CorsPolicyProvider
{
PolicyResolver = context => Task.FromResult(policy)
}
});
Run Code Online (Sandbox Code Playgroud)
如您所见,您设置PolicyResolver属性,即a Func<IOwinRequest, Task<CorsPolicy>>.基于IOwinContext(对于当前请求),您需要返回a CorsPolicy(另请参见其来源).这应具有微调策略所需的属性.列表属性具有私有setter(可能是为了避免潜在的null指针),但它们都是在默认构造函数中初始化的,因此您应该能够添加它们.
| 归档时间: |
|
| 查看次数: |
1382 次 |
| 最近记录: |