2017-02-15 2 views
3

Ich entwickle eine Anwendung für mein AppleTV. Die App liest Filme von einer Online-Website, die keine API für diese Art von Sache entwickelt hat.sende ein Cookie mit XMLHTTPRequest (TVMLJS)

Ich benutze XMLHTTPRequest, um die verschiedenen URLs zu erhalten und den Benutzer nach seinem Film usw. suchen zu lassen. Alles funktioniert gut, außer für eine einzige Anfrage. Um die Film-URL zu erhalten, muss ich eine Get-Anfrage an eine bestimmte Adresse senden (sagen wir http://example.com/getmovie.html) mit einem konstanten Cookie (sagen wir mycookie = cookie).

Ich habe versucht, mit setRequestHeader:

var xhr = new XMLHttpRequest(); 
xhr.open("GET", url, false); 
xhr.withCredentials = true; 
xhr.setRequestHeader('Cookie', 'mycookie=cookie'); 
xhr.send(); 

Aber kein Cookie scheint gesendet werden. Ich habe auch versucht, den Cookie mit Document.cookie zu setzen, als hätte ich wahrscheinlich in einem "normalen" js-Skript (läuft in meinem Browser) getan, aber auch kein Glück.

Das ist extrem frustrierend, zumal ich so kurz vor dem Ende meiner App feststecke.

Ich denke, Cross-Herkunft könnte das Problem sein, aber ich bin in der Lage, URLs ohne Probleme zu erhalten, wenn ich keine Cookies setzen muss, so dass ich ein wenig verloren dort bin.

Bitte lassen Sie mich wissen, wie ich http://example.com/getmovie.html mit einem bestimmten Cookie-Header bekommen kann.

Danke für Ihre Hilfe

+0

es tut uns leid, Sie zu informieren, aber die xmlHTTPRequest Funktion von Javascript erlaubt nicht eine Cookie-Header aus Sicherheitsgründen wie hier gezeigt gesetzt werden: http://StackOverflow.com/Questions/15198231/Why-Cookies-and-set- cookie-headers-cant-be-set-while-making-xmlhttprequest-usin die beste Weise, die ich sehen könnte, dass Sie die Anforderung erhalten würde zu einem Proxy-Server, den Sie laufen würden –

+0

Vielen Dank. Gibt es eine andere Möglichkeit, eine Get-Anfrage an eine URL mit einem Cookie auszuführen? Vielleicht mit etwas anderem als xmlHTTPRequest? Diese Sicherheit scheint wirklich ein Overkill zu sein ... Von dem, was ich in anderen Posts sah, dachte ich, dass die Sicherheit vom Browser kam. Aber in meinem Fall gibt es keinen Browser, da es eine AppleTV App ist. – Scaum

+0

Es ist wahrscheinlich in die Xmlhttprequest-Spezifikation eingebaut und wenn Sie die Kontrolle über den Server haben, senden Sie die Anfrage an und können Antwort Header ändern kann es möglich sein, eine xmlhttp Anfrage mit einem Cookie –

Antwort

2

im sorry Ihnen mitteilen zu können, aber die XMLHttpRequest-Funktion von JavaScript erlaubt es nicht, ein Cookie-Header aus Sicherheitsgründen eingestellt werden, wie hier gezeigt: Why cookies and set-cookie headers can't be set while making xmlhttprequest using setRequestHeader? i die beste Art und Weise kann man sehen, machen, dass bekommen Anforderung wäre zu einem Proxy-Server, den Sie ausführen würden. Ich glaube, dass es auf diese Weise gebaut wird, um Sie daran zu hindern, Cookies auf Domains zu setzen, die Sie nicht besitzen. Außerdem sehe ich keine alternative Lösung für dieses Problem, da in den Dokumenten, die ich angeschaut habe, Cookie-Persistenz oder -Verwaltung erwähnt wurde

3

Falls jemand das gleiche Problem hat:

Ich habe keine Lösung gefunden, um ein Cookie mit Javascript zu senden. In meiner Situation spielte der Ursprung der Anfrage keine Rolle, nur der Cookie. Meine Lösung war dann, eine PHP-Datei zu erstellen, die die Ziel-URL und den Cookie-Inhalt als Parameter erhielt und dann die get-Anfrage mit dem Cookie als Anfrage-Header sendete. (mehr Informationen dazu finden Sie hier: PHP GET Request, sending headers).

In meinem Javascript verwende ich dann XMLHttpRequest, um eine Verbindung zu meiner PHP-Datei (gehostet online) mit einfachen Get-Parameter und ich bekomme dann die Antwort von der PHP. Dieser Trick wird natürlich nicht funktionieren, wenn der Ursprung der Anfrage wichtig ist (außer, wenn Sie Ihre Datei zu Hause hosten, denke ich, aber in meinem Fall möchte ich, dass meine Anwendung funktioniert, auch wenn mein WAMP nicht aktiv ist).

Verwandte Themen