2017-12-29 34 views
-1

Morgen;Apigee + Angular Kein 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden

Vielleicht wurde diese Frage vor 100 mal gestellt, aber ich kann es wirklich nicht lösen. Ich habe diese Konfiguration in Apigee, die auf OPTIONS-Anfrage reagieren.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 
<AssignMessage async="false" continueOnError="false" enabled="true" name="AM-AddCors"> 
    <DisplayName>AM-AddCors</DisplayName> 
    <Properties/> 
    <Add> 
     <Headers> 
      <Header name="Access-Control-Allow-Origin">*</Header> 
      <Header name="Access-Control-Allow-Headers">Content-Length, Content-Disposition, Origin, x-requested-with, Accept, Content-Type, Authorization</Header> 
      <Header name="Access-Control-Max-Age">3628800</Header> 
      <Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header> 
     </Headers> 
    </Add> 
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables> 
    <AssignTo createNew="false" transport="http" type="request"/> 
</AssignMessage> 

In der Client-Seite mache ich diesen Aufruf mit kantigem (Httpclient)

public downloadS2Report(url) { 
    let headers = new HttpHeaders(); 
    let fullurl = environment.config.fundsApi.concat(url); 
    headers = headers.set("Authorization", "Bearer *****"); 
    return this.http.get(fullurl, {headers: headers}) 
     .map((response:any) => { 
     if (response.status == 200) { 
      var contentType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'; 
      var blob = new Blob([(<any>response)._body], {type: contentType}); 
      return blob; 
     }  
     }); 
    } 

ich die Ergebnisse in der Debug-Ansicht in Chrom sehen kann, aber ich habe den berühmten Fehler mit kantigem „Access-Control Der Header "-Hintergrund" ist auf der angeforderten Ressource vorhanden ". Vermisse ich einen Params in der Apigee Config?

enter image description here

enter image description here

enter image description here

+0

Mögliches Duplikat [No "Access-Control-Allow-Origin-Header in Angular 2 app] (https://stackoverflow.com/questions/36002493/no- access-control-allow-origin-header-in-eckig-2-app) – georgeawg

Antwort

2

Sie müssen sich mit den relevanten CORS Header auf allen Antworten reagieren, nicht nur die OPTIONS Preflight-Anfrage. Also auf Ihrer GET Antwort, die Sie auch benötigen:

<Headers> 
     <Header name="Access-Control-Allow-Origin">*</Header> 
     <Header name="Access-Control-Allow-Headers">Content-Length, Content-Disposition, Origin, x-requested-with, Accept, Content-Type, Authorization</Header> 
     <Header name="Access-Control-Max-Age">3628800</Header> 
     <Header name="Access-Control-Allow-Methods">GET, PUT, POST, DELETE</Header> 
    </Headers> 
+0

Danke, ich wusste nicht, dass ich mit diesem params in jedem Anruf reagiere –

Verwandte Themen