Я пытаюсь узнать angular У меня проблема с CORS.
Проксиконфиг создания файла. json
{
"/api/*" : {
"target": "http://localhost:9000",
"secure": false,
"logLevel": "debug"
}
}
9000 - это номер моего внутреннего прокси. Далее этот файл используется в пакете. json
"name": "white-space-map-web-ui",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve --proxy-config proxyconfig.json",
"build": "ng build",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
Из c является частью этого файла.
У меня есть сервис, который получает клиентов от сервиса.
Это мой простой сервис.
import { HttpClient } from '@angular/common/http';
import { Client } from 'src/models/client';
import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
@Injectable()
export class ClientService {
private url : string = '/api/Client';
constructor(private http : HttpClient){}
getClients() : Observable<Client[]> {
return this.http.get<Client[]>('/api/Client');
}
}
Далее я внедряю в AppModule этот сервис и использую этот метод.
getClients(){
this.client.getClients().subscribe(clients =>{
console.log(clients);
});
и HTML
<button (click)="getClients()">getClients</button>
Все в порядке, но сначала я был проблема с protecion CORS «Access-Controll-Allow-Origin», но теперь у меня есть проблема, потому что, когда я пытаюсь нажать метод GET, я подключаюсь к прокси-серверу 4200, а не к 9000, то есть прокси моего интерфейса, а не бэкэнда
Это мой бэкэнд:
public class Program
{
private static void Main(string[] args)
{
var rc = HostFactory.Run(x =>
{
x.Service<OwinBootstrap>(s =>
{
s.ConstructUsing(name => new OwinBootstrap());
s.WhenStarted(owinBootstrap => owinBootstrap.Start());
s.WhenStopped(owinBootstrap => owinBootstrap.Stop());
});
x.RunAsLocalSystem();
x.SetDescription("White space WebApi ");
x.SetDisplayName("WhiteSpaceWebApi");
x.SetServiceName("WhiteSpaceWebApi");
});
var exitCode = (int)Convert.ChangeType(rc, rc.GetTypeCode());
Environment.ExitCode = exitCode;
}
}
internal class OwinBootstrap
{
private readonly IAppSettings _appSettings = new AppSettings();
private IDisposable _webApi;
public void Start()
{
var baseAdress = _appSettings.WebApiUri;
_webApi = WebApp.Start<Startup>(baseAdress);
}
public void Stop()
{
_webApi.Dispose();
}
}
public class Startup
{
public void Configuration(IAppBuilder appBuilder)
{
// Configure Web API for self-host.
var config = new HttpConfiguration();
config.Routes.MapHttpRoute(
"DefaultApi",
"api/{controller}/{id}",
new { id = RouteParameter.Optional }
);
appBuilder
.UseNinjectMiddleware(new NinjectBootstrap().GetKernel)
.UseNinjectWebApi(config);
}
}
internal interface IAppSettings
{
string WebApiUri { get; }
}
internal class AppSettings : IAppSettings
{
public string WebApiUri => ConfigurationManager.AppSettings["WebApiUri"];
}
<appSettings>
<add key="WebApiUri" value="http://localhost:9000/" />
</appSettings>