рдпрджрд┐ рдХреЛрдИ HTTP рдЕрдиреБрд░реЛрдз CORS-рд╕рдХреНрд╖рдо рд╕рдорд╛рдкрди рдмрд┐рдВрджреБ рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ origin
HTTP рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рд╣реИ, рддреЛ рдЕрдиреБрд░реЛрдз HTTP 500 рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд▓реЙрдЧ рдореЗрдВ рдЕрдкрд╡рд╛рдж рд╣реИ:
[2019-04-13 14:40:04Z] fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.InvalidOperationException: Endpoint MartinCostello.Api.Controllers.TimeController.Get (API) contains CORS metadata, but a middleware was not found that supports CORS.
Configure your application startup by adding app.UseCors() inside the call to Configure(..) in the application startup code.
at Microsoft.AspNetCore.Routing.EndpointMiddleware.ThrowMissingCorsMiddlewareException(Endpoint endpoint)
at Microsoft.AspNetCore.Routing.EndpointMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.HttpOverrides.HttpMethodOverrideMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware.Invoke(HttpContext context)
рд╣рд╛рд▓рд╛рдВрдХрд┐, app.Cors()
_has_ рдХреЛ app.UseEndpoints(...)
рд╕реЗ рдкрд╣рд▓реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИред
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ #9181 рджреНрд╡рд╛рд░рд╛ рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ origin
рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдирд╣реАрдВ рд╣реИ, рддреЛ CORS рдорд┐рдбрд▓рд╡реЗрдпрд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдПрдВрдбрдкреЙрдЗрдВрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╕реАрдУрдЖрд░рдПрд╕ рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдХреЛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдЬрд╛рдВрдЪрддрд╛ рд╣реИ рдХрд┐ HttpContext
рдореЗрдВ рдПрдХ рдХреБрдВрдЬреА рдХреА рддрд▓рд╛рд╢ рдХрд░рдХреЗ рд╕реАрдУрдЖрд░рдПрд╕ рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдЬреЛ рдпрд╣ рдерд╛, рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛)ред рдЖрдЗрдЯрдоред рдЖрдЗрдЯрдо рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХрд╛ рдЧрдпрд╛ рд╣реИ:
рдПрдВрдбрдкреЙрдЗрдВрдЯ рдорд┐рдбрд▓рд╡реЗрдпрд░ рджреНрд╡рд╛рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдХреА рдЬрд╛ рд░рд╣реА рдХреБрдВрдЬреА рдХреЗрд╡рд▓ рддрднреА рдЬреЛрдбрд╝реА рдЬрд╛рддреА рд╣реИ рдЬрдм рдЕрдиреБрд░реЛрдз рдореЗрдВ origin
рд╣реЗрдбрд░ рдореМрдЬреВрдж рд╣реЛ, рдЬреЛ рдпрд╣рд╛рдВ рд╣реИ:
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рджреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд╕реБрдзрд╛рд░ рдпрд╛ рддреЛ рд╣реИрдВ:
HttpContext.Items
рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдпрд╛:origin
рд╣реЗрдбрд░ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ CORS рдореЗрдЯрд╛рдбреЗрдЯрд╛ рдПрдВрдбрдкреЙрдЗрдВрдЯ рдкрд░ рдореМрдЬреВрдж рд╣реИ, рдФрд░ рдХреЗрд╡рд▓ CORS рдорд┐рдбрд▓рд╡реЗрдпрд░ рдХреЗ рдЧреИрд░-рдЖрд╣реНрд╡рд╛рди рдХреЗ рд▓рд┐рдП рдЕрдкрд╡рд╛рдж рдХреЛ рдлреЗрдВрдХрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ HTTP рдЕрдиреБрд░реЛрдз рдореЗрдВ рдореМрдЬреВрдж рд╣реИред[EnableCors(...)]
рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реЗрдВредрдЕрдиреБрд░реЛрдз рд╕рдлрд▓ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рдХреЛрдИ origin
HTTP рдЕрдиреБрд░реЛрдз рд╢реАрд░реНрд╖рд▓реЗрдЦ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
.NET Core SDK (reflecting any global.json):
Version: 3.0.100-preview4-011204
Commit: 621575bab1
Runtime Environment:
OS Name: Windows
OS Version: 10.0.17763
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\3.0.100-preview4-011204\
Host (useful for support):
Version: 3.0.0-preview4-27612-09
Commit: 64e9c3e1cd
рдЗрд╕реЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реИрдВрдбрдмреЙрдХреНрд╕ рдРрдк рдХреЗ рд▓рд┐рдП рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдкрд╛рдИ рдЧрдИ: https://github.com/martincostello/api/pull/109/commits/a40a99f2dbb82d17ce6cc7cde5e13bc400d78137
cc @pranavkm
рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 4 рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
1) рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реЛрдирд╛ рдЬреЛ HttpContext.Items
рдмрд╛рдж UseCors()
HttpContext.Items
рдореЗрдВ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ
```рд╕реА#
рдРрдкред рдпреВрдЬрдХреЙрд░реНрд╕ ();
app.Use ((рд╕рдВрджрд░реНрдн, рдЕрдЧрд▓рд╛) =>
{
рд╕рдВрджрд░реНрднред рдЖрдЗрдЯрдо ["__CorsMiddlewareInvoked"] = рд╕рдЪ;
рдЕрдЧрд▓рд╛ ();
});
2) Disable the check in `EndpointRouting`:
```C#
services.AddRouting(r => r.SuppressCheckForUnhandledSecurityMetadata = true);
рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд▓рдд-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди 4 рдХреЗ рд▓рд┐рдП, рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ:
1) рдПрдХ рдорд┐рдбрд▓рд╡реЗрдпрд░ рд╣реЛрдирд╛ рдЬреЛ
HttpContext.Items
рдмрд╛рджUseCors()
HttpContext.Items
рдореЗрдВ рдорд╛рди рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ```рд╕реА#
рдРрдкред рдпреВрдЬрдХреЙрд░реНрд╕ ();
app.Use ((рд╕рдВрджрд░реНрдн, рдЕрдЧрд▓рд╛) =>
{
рд╕рдВрджрд░реНрднред рдЖрдЗрдЯрдо ["__CorsMiddlewareInvoked"] = рд╕рдЪ;
рдЕрдЧрд▓рд╛ ();
});
рдкрд╣рд▓реЗ рд╡рд╛рд▓реЗ рдХреЛ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рджреА рдЬрд╛рдПрдЧреА рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЧрд▓рдд-рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдП рдЧрдП рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдЪреЗрдХ рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛ рд░рд╣рд╛ рд╣реИред