2017-02-15 130 views
3

我正在爲我的AppleTV開發一個應用程序。該應用程序將從一個沒有開發任何API的在線網站上閱讀這些電影。用XMLHTTPRequest發送一個cookie(TVMLJS)

我使用XMLHTTPRequest來獲取不同的URL並讓用戶搜索他的電影等等。除了單個請求外,一切工作正常。要獲得電影URL,我必須發送一個獲取請求到一個特定的地址(比如說http://example.com/getmovie.html)與一個常量的cookie(比方說mycookie = cookie)。

我一直在使用setRequestHeader嘗試:

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

但沒有Cookie的似乎被髮送。 我也試着用Document.cookie設置cookie,就像我可能在一個「正常」的js腳本(在我的瀏覽器中運行)完成但沒有運氣。

這是非常令人沮喪的,特別是因爲我卡住了我的應用程序的盡頭。

我想交叉原點可能是問題,但如果我不需要設置cookie,我可以毫無問題地獲得URL,所以我有點迷路了。

請讓我知道如何通過特定的cookie標頭獲得http://example.com/getmovie.html。如圖所示

感謝您的幫助

+0

即時通訊不好意思,但JavaScript的xmlHTTPRequest函數不允許爲安全原因設置cookie頭,如下所示:http://stackoverflow.com/questions/15198231/why-cookies-and-set- cookie-headers-can-set-while-making-xmlhttprequest-usin以最好的方式,我可以看到你使得獲取請求將是一個代理服務器,你將運行 –

+0

謝謝。有沒有其他的方式來執行一個獲取請求的URL與一個cookie然後呢?也許使用別的不是xmlHTTPRequest?這個安全真的看起來像一個矯枉過正的... 從我在其他帖子上看到的,我認爲安全來自瀏覽器。但在我的情況下,沒有瀏覽器,因爲它是一個appleTV應用程序。 – Scaum

+0

它可能內置在xmlhttprequest規範中,如果您有控制服務器的請求,並且能夠修改響應頭,則可以使用cookie創建xmlhttp請求 –

回答

2

IM遺憾地通知你,但的JavaScript的XMLHttpRequest的功能不允許餅乾頭出於安全原因設定的位置:Why cookies and set-cookie headers can't be set while making xmlhttprequest using setRequestHeader?最好的方式,我可以看到你在做的是得到請求將會是您將運行的代理服務器。我相信它是以這種方式構建的,以防止您在不屬於您的域名上設置Cookie,而且我也沒有看到針對此問題的替代解決方案,因爲我看到的文檔中沒有提到cookie是持久性還是管理提及

3

如果有人有同樣的問題:

我沒有找到一個解決方案發送一個cookie的JavaScript。然而,在我的情況下,請求的來源並不重要,只有cookie做到了。然後,我的解決方案是創建一個接收目標URL和cookie內容作爲參數的PHP文件,然後將帶有cookie的get請求作爲請求標頭髮送。 (更多關於如何在此處的信息:PHP GET Request, sending headers)。

在我的JavaScript我然後使用XMLHttpRequest連接到我的PHP文件(託管在線)與簡單的獲取參數,然後我收到來自PHP的響應。如果請求的來源很重要,那麼這個技巧當然不會起作用(除非你在家裏寄存你的文件,但在我的情況下,即使我的WAMP不在,我也希望我的應用程序工作)。