2016-10-26 3 views
1

Dies ist mein Code.406 (nicht akzeptabel) Eisen-Ajax

<iron-ajax auto 
       id="requestRepos"  
       url="myurl" 
       params='{"mycommaseperatedparams"}' 
       handle-as="json" 
       on-response="handleResponse"></iron-ajax> 

Wenn ich manuell die URL im Broswer triff, funktioniert es. Aber das tut es nicht. Es ist eine GET-Anfrage.

Antwort

2

HTTP-Statuscode 406 bedeutet, dass der Server keine Repräsentation zurückgeben kann, die den Accept--Headern entspricht. Vom specs:

Die von der Anforderung identifizierten Betriebsmittel nur in der Lage ist, Antworteinheiten zu erzeugen, den Inhalt Merkmale nicht akzeptabel gemäß den in der Anforderung gesendeten Header akzeptiert.

Weitere Antworten finden Sie hier: What is "406-Not Acceptable Response" in HTTP?

Dies ist höchstwahrscheinlich die die Accept Header application/json vom iron-ajax Element festgelegt. Der Browser (Chrome) auf der anderen Seite standardmäßig sendet Anfragen mit

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 

Wo die */* Bit jeden Inhaltstyp übereinstimmt.

Um zu beheben, müssten Sie auf der Serverseite arbeiten, um JSON-Antworten zuzulassen. Sie könnten auch versuchen explizit die Kopfeinstellung obwohl ich Eisen-Ajax außer Kraft zu setzen Accept Header sowieso

<iron-ajax headers='{"Accept": "*/*"}' handle-as="json"></iron-ajax> 

Wieder erwarten, ist die */* nur ein Beispiel. Sie benötigen wahrscheinlich einen spezifischeren Medientyp.

+0

Sie sind ein Lebensretter! 'headers = '{" Accept ":" */* "}' löste mein Problem. Danke ein TONN! –

+1

Und ich lese auch die Erklärung. Jetzt habe ich die genaue Ursache kennengelernt. Vielen Dank. –

Verwandte Themen