Nachdem ich nicht in der Lage war herauszufinden, was falsch lief, dachte ich, dass ich mein Glück hier versuchen würde, um zu sehen, ob jemand weiß, was los ist.Javascript GET Anfrage mit 301 Redirect
Ich habe eine angularJS App mit einem GoLang/Gorilla Mux Server Backend. Der Web-App ist auf http://localhost:8888/ und dem Server, http://localhost:8080/
Im Prinzip habe ich diese einfache Javascript Anfrage GET:
$.get('http://localhost:8080/api/v1'+'/locations/', {borough: "Queens"})
Element inspiziert Verwendung in der Antwort-Header ich folgend sehen:
Content-Length:68
Content-Type:text/html; charset=utf-8
Date:Sun, 17 Apr 2016 20:12:00 GMT
Location:/api/v1/locations?borough=queens
und die folgenden in der Konsole:
XMLHttpRequest cannot load http://localhost:8080/api/v1/locations/? borough=queens. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8888' is therefore not allowed access.
Ich versuche, die genau die gleiche Anfrage Postman mit und 401 mit sehen:
Access-Control-Allow-Origin →*
Content-Length →0
Content-Type →text/plain; charset=utf-8
Date →Sun, 17 Apr 2016 19:46:53 GMT
Welche ist das, was ich erwarte. Aus irgendeinem Grund scheint es, dass meine Anfrage es nicht einmal auf den Server bringt, der keine 301-Anfrage anbietet. Die Tatsache, dass Postman und die App völlig unterschiedliche Antworten geben, ist verblüffend.
Ich hatte einige Probleme mit CORS aber dachte, dass ich das gelöst habe. Die Tatsache, dass Postman mir ein anderes Ergebnis mit dem Access-Control-Allow-Origin-Header gibt, lässt mich denken, dass dies etwas anderes ist.
Ich freue mich über jede Hilfe.
Edit:
Ich habe den Server Antwort zurück mit den Standardparametern Cors. Dies ist, was ich jetzt von Postman erhalten:
Access-Control-Allow-Headers →Origin, X-Requested-With, Content-Type, Accept, Authorization
Access-Control-Allow-Methods →GET, POST, PUT, DELETE
Access-Control-Allow-Origin →*
Content-Length →0
Content-Type →text/plain; charset=utf-8
Date →Sun, 17 Apr 2016 20:27:31 GMT
immer noch die 301 für den JS Anruf bekommen ...
Edit2: (versucht Postman Anrufeinstell- gleiche wie Netzwerkanforderung an exakt)
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:localhost:8080
Origin:http://localhost:8888
Referer:http://localhost:8888/root/mainapp/
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.112 Safari/537.36
Immer noch die gleichen 301 aus Inspect-Element und 401 erwartet mit Postman. Wie kann es sein, dass wir in einem Restful-HTTP-Kontext zwei identische HTTP-Aufrufe haben und dennoch ein völlig anderes Verhalten haben ?!
Vielleicht sollten Sie es in https anrufen? https://en.wikipedia.org/wiki/HTTP_301 – mauros
@mauros Nicht sicher, warum das nötig wäre.Wie auch immer, ich habe es versucht und net :: ERR_SSL_PROTOCOL_ERROR – JoeyN
Sie sind eine Cross-Domain-Anfrage, die CORS aktiviert auf dem Server erfordert. Bitte führen Sie eine Websuche nach diesem Fehler durch. Es kommt hier mehrmals am Tag vor. Der Postbote unterliegt nicht den CORS-Beschränkungen oder der gleichen Ursprungsrichtlinie. – charlietfl