Вот как в настоящее время мы делаем,
У нас есть HttpOptionsClass
, который содержит код ниже
export const httpOptions = {
headers: new HttpHeaders({
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*"
})
};
И у нас есть класс обслуживания, который внедряет сервис HttpClient
и ниженаш POST
код действия
saveCustomer (customer: Customer ): Observable<any> {
return this.httpClient.post<Customer>(
environment.baseUrl + "/customers",
customer,
httpOptions
);
}
Ниже представлен бэкэнд ASP.Net Core Web API с обработкой CORS
Контроллер API
[Produces("application/json")]
[Route("api/[controller]s")]
public class CustomerController : Controller
{
[HttpPost]
public async Task<IActionResult> Post([FromBody] Customer customer)
{
// your code goes here
return Created($"api/customers/{customer.Id}", customer);
}
}
appsettings.json класс
{
"AllowedOrigins": [
"http://localhost:4200"
],
"AllowedHosts": "*",
}
Класс запуска
public void ConfigureServices(IServiceCollection services)
{
services.AddCors(options =>
{
// this defines a CORS policy called "default"
options.AddPolicy("AllowSpecificOrigin", policy =>
{
var corsUrlSection = Configuration.GetSection("AllowedOrigins");
var corsUrls = corsUrlSection.Get<string[]>();
policy.WithOrigins(corsUrls)
.AllowAnyHeader()
.AllowAnyMethod();
});
});
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
app.UseCors("AllowSpecificOrigin");
}
Доступ из клиентского компонента
this.service.saveCustomer(this.customer : Customer).subscribe(
result => {
},
error => {
}
);
Сначала проверьте, достигли ли вы конечной точки.Если вы получили ошибку 500 и проблему с CORS, есть большая вероятность, что что-то не так с вашим кодом внутри действия