2016-07-26 2 views
1

Ich mache eine Cross-Ursprungs-Anfrage, um eine JSON-Antwort von der URL, die eine Standard-Authentifizierung hat. Auf Knopfdruck stellen Sie also die Header für die Standard-Authentifizierung ein. Wenn ich die Werte ausdrucke, bevor die Anfrage gesendet wurde, sehe ich sie. Aber wenn ich das Chrome-Dev-Tool für die Anfrage überprüfe, sehe ich nicht, dass die Header gesetzt wurden. Auch die Anforderung wird zu einer "Options" -Anforderung von "GET" -Anforderung und die Antwort kommt als 401 nicht autorisiert. Gibt es etwas, das fehlt?Polymer.js Eisen-Ajax-Header grundlegende Autorisierung funktioniert nicht

<paper-input type="search" value="{{imageUrl}}" placeholder="Enter Image URL"></paper-input> 
    <div class="buttons"> 
    <paper-button on-tap="getData" autofocus>Search</paper-button> 
    </div> 
    <iron-ajax 
    id="xhr" 
    url="https://api.com/v1" 
    params='{"url":"some query value"}' 
    handle-as="json" 
    method="GET" 
    last-response="{{ajaxResponse}}"></iron-ajax> 

    getData: function(){ 
    this.$.xhr.headers['X-Requested-With'] = "XMLHttpRequest"; 
    this.$.xhr.headers['Authorization'] = this.makeHeaders(this.user, this.password); 
    this.$.xhr.generateRequest(); 
    } 
+0

Das gibt mir zu glauben, dass der Bruder wser sendet eine Preflight-Anfrage mit der Optionsmethode an "https://api.com/vi" und Sie müssen diese Optionsmethode behandeln, indem Sie den http-Status 200 zurücksenden und dann sollten Sie normal weiterarbeiten. – getbuckts

+0

Überprüfen Sie diese URLs: http://StackOverflow.com/Questions/30632200/standalone-spring-oauth2-jwt-authorization-server-cors/30638914#30638914 http://StackOverflow.com/Questions/8685678/cors-how- do-preflight-an-httprequest – getbuckts

+0

@getBuckts Es ist eigentlich ein Third-Party-API-Service, den ich treffe und es funktioniert, wenn ich es vom Postboten mache. Auch ich habe versucht mit Safari und Firefox mit der gleichen Fehlermeldung. Nicht sicher, was ich falsch mache –

Antwort

1

standardmäßig iron-ajax nicht die credentials standardmäßig für Cross-Site senden Anfragen

Sie können dies ändern, indem Sie die withCredentials Eigenschaft auf der iron-ajax Einstellung:

<iron-ajax 
    id="xhr" 
    url="https://api.com/v1" 
    params='{"url":"some query value"}' 
    handle-as="json" 
    with-credentials="true" 
    method="GET" 
    last-response="{{ajaxResponse}}"></iron-ajax> 

oder

this.$.xhr.withCredentials = true; 
Verwandte Themen