Ich baue ionic
App mit django rest framework
Backend, Und ich kann nicht einfach http grundlegende Auth tun.Wie man HTTP Basic Auth mit eckigen
Backend view
:
class GetActive(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get(self, request):
settings = Setting.objects.filter(active=True)
for setting in reversed(settings):
headers = {'Access-Control-Allow-Origin': '*'}
return Response({
'youtube_link': setting.youtube_link,
'text': setting.text}, headers=headers)
return HttpResponse('not found')
Frontend api.ts
:
@Injectable()
export class ApiProvider {
url;
constructor(public http: Http) {
this.url = 'http://127.0.0.1:8000/get_active/';
}
getSettings() {
var auth = window.btoa("foo:bar"),
headers = {"Authorization": "Basic " + auth};
return this.http.get(this.url, {headers: headers}).map(res => res.json());
}
}
Ich erhalte diese Fehlermeldung:
403 forbidden No 'Access-Control-Allow-Origin' header is present on the requested resource.
Wenn ich jedoch IsAuthenticated
permisson auf Backend entfernen und Header entfernen von der Frontend-Anfrage funktioniert es dann.
Um sicher zu sein, dass es in der Tat funktioniert, wenn IsAuthenticated
eingeschaltet ist, Ich mache diesen Python-Skript:
import requests
from requests.auth import HTTPBasicAuth
theurl = 'http://localhost:8000/get_active'
username = 'foo'
password = 'bar'
r = requests.get(theurl, auth=HTTPBasicAuth(username, password))
print (r.text)
Und es funktioniert gut, so dass ich brauche nur analog js.
Sie müssen CORS auf Ihrem Webserver aktivieren, weil einen AJAX-Aufruf von Javascript Sie sollten CORS auf dem Server aktiviert haben –