c# - Cross-Origin-request Blocked - Missing Token 'Access-Control-Allow-Headers' (No Web.config) -
there many questions regarding issue, no answers questions fix mine, , since lost on 3rd page of google, time ask question..
issue 1: trying make requests localhost external api.
for external api, cors preflight returns 200 actual method never fired: 
service:
/** * * @param postalcode * @param housenumber */ getaddressfrompostalcode(postalcode: string, housenumber: string) { // initialize empty object this.addressfrompostalcode = ''; // search parameters let params: urlsearchparams = new urlsearchparams(); params.set('postcode', postalcode); params.set('number', housenumber); // apply headers let headers = new headers(); headers.append('access-control-allow-headers', 'content-type'); headers.append('access-control-allow-methods', 'get'); headers.append('access-control-allow-origin', '*'); headers.append('x-api-key', this.apikey); // request options let options = new requestoptions({ headers: headers, search: params }); // request return this.http.get(this.basepostalcodeurl, options) .map(response => response.json()); } component
getaddressfrompostalcode() { this.isrequesting = true; this.postalcodeservice.getaddressfrompostalcode(this.contract.postalcode, this.contract.housenumber) .finally(() => this.isrequesting = false) .subscribe( result => { if (result) { this.deliveryaddress.street = json.stringify(result) } else { this.delivery.street = 'no address found'; } }, error => this.errors = error ); } it seems failing @ service, not returning result in component.
my startup.cs
// method gets called runtime. use method add services container. public void configureservices(iservicecollection services) { // ******************** // setup cors // ******************** // add service , create policy options services.addcors(options => { options.addpolicy("allowall", builder => builder.allowanyorigin() .allowanymethod() //corsbuilder.withorigins( //"http://localhost:4200", //"http://localhost:5000", //"https://api.postcodeapi.nu/v2/addresses" .allowanyheader() .allowcredentials()); }); // adds services required building services.addmvc(); ... // method gets called runtime. use method configure http request pipeline. public void configure(iapplicationbuilder app, ihostingenvironment env, iloggerfactory loggerfactory) { // apply cors requests app.usecors("allowall"); app.useexceptionhandler(appbuilder => { appbuilder.run(async context => { context.response.headers.add("access-control-allow-origin", "*"); context.response.statuscode = 500; await context.response.writeasync("internal server error"); }); }); ... app.usemvc(); issue 2: when posting data internal asp web api receive same header ‘access-control-allow-origin’ missing error, but does post data server (weird)
thanks in advance,
edit: request issue 1 accepted when using firefox plugin: https://addons.mozilla.org/en-us/firefox/addon/cors-everywhere/
but why?
Comments
Post a Comment