Mah*_*ari 5 asp.net asp.net-mvc cors asp.net-core-mvc
我们正在开发一个由 AndroidMobile App和Web API. Web API 是 Asp.net MVC Core。
我已经启用了CORS服务于我Startup.cs,因此移动应用程序的API调用是跨源访问,我收到access-control-allow-origin ?*的响应头。
API 返回给移动应用请求的部分结果是包含一些 CSS 文件的 HTML(在移动视图中显示为广告)。在移动视图中加载 HTML 时,不会加载 CSS 文件,因为它们似乎不可跨源访问。
有什么我想念的吗?我错过了任何配置步骤吗?
我的 CORS 配置如下:
public void ConfigureServices(IServiceCollection services)
{
...
services.AddCors(options =>
{
options.AddPolicy("RTBCors",
builder => builder.AllowAnyOrigin()
.AllowAnyMethod()
.AllowAnyHeader()
//.AllowCredentials()
);
});
services.Configure<MvcOptions>(options =>
{
options.Filters.Add(new Microsoft.AspNetCore.Mvc.Cors.Internal.CorsAuthorizationFilterFactory("RTBCors"));
});
services.AddMvc(...);
...
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
...
app.UseCors("RTBCors");
app.UseMvc(routes => .... );
...
}
Run Code Online (Sandbox Code Playgroud)
小智 2
app.UseStaticFiles(new StaticFileOptions
{
OnPrepareResponse = context =>
{
if (context.File.Name.ToLower().EndsWith(".json"))
{
var origin = context.Context.Request.Headers[CorsConstants.Origin];
var requestHeaders = context.Context.Request.Headers;
var isOptionsRequest = string.Equals(context.Context.Request.Method, CorsConstants.PreflightHttpMethod, StringComparison.OrdinalIgnoreCase);
var isPreflightRequest = isOptionsRequest && requestHeaders.ContainsKey(CorsConstants.AccessControlRequestMethod);
var corsResult = new CorsResult
{
IsPreflightRequest = isPreflightRequest,
IsOriginAllowed = IsOriginAllowed(Policy, origin),
};
if (!corsResult.IsOriginAllowed)
{ context.Context.Response.StatusCode = 204;
}
}
Run Code Online (Sandbox Code Playgroud)
尝试我的完整示例https://github.com/DureSameen/CorsStaticFiles
| 归档时间: |
|
| 查看次数: |
1674 次 |
| 最近记录: |