与xmlhttprequest(tvmljs)一起发送cookie



我正在为我的appletv开发一个应用程序。该应用程序将从在线网站上读取电影,该网站尚未为这种事情开发任何API。

我使用xmlhttprequest获取不同的URL,并让用户搜索他的电影等...除了单个请求外,一切正常。要获取电影URL,我必须将get请求发送到特定地址(例如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();

,但似乎没有饼干。我还尝试使用document.cookie设置cookie。就像我可能在"正常" JS脚本(在我的浏览器中运行)一样,但也没有运气。

也没有运气。

这是非常令人沮丧的,尤其是因为我陷入了应用程序的尽头。

我猜可能是跨原素的问题,但是如果我不必设置cookie,我就可以在没有问题的情况下找到URL,所以我在那里有点迷路。

请让我知道如何获得带有特定cookie标头的http://example.com/getmovie.html。

感谢您的帮助

我很抱歉通知您,但是出于安全原因,JavaScript的XMLHTTPRequest函数不允许设置cookie标头,如下所示:为什么不能设置cookie和set-cookie标头在使用setRequestheader制作xmlhttprequest时?我可以看到您提出请求的最好方法是您将运行的代理服务器。我相信它是这样构建的,以防止您在您不拥有的域上设置cookie,此外,我看不到此问题的替代解决方案,因为我所看的文档中没有cookie持久性或管理层提到

以防有人有同样的问题:

我找不到使用JavaScript发送cookie的解决方案。但是,在我的情况下,请求的起源并不重要,只有cookie才能。然后,我的解决方案是创建一个接收目标URL和Cookie内容作为参数的PHP文件,然后以Cookie作为请求标头发送GET请求。(有关如何做的更多信息,此处:php获取请求,发送标题)。

在我的JavaScript中,我使用XMLHTTPREQUEST连接到我的PHP文件(在线托管),然后使用简单的获取参数连接,然后我从PHP中收到响应。当然,如果请求的来源很重要(除非您在家主持文件,否则我想我希望我的申请工作,即使我的wamp不开启)。

好吧...这里的问题是xhr.setRequestHeader('Cookie', 'mycookie=cookie');行,只是因为'cookie'标头保留给客户端浏览器以发送存储的cookie。这意味着您正在尝试执行浏览器已经做的事情。当您发送任何请求时,客户端浏览器会自动使用与您要请求的网站相关的所有cookie,并将其放在" cookie"标头上,您无需做任何其他事情,如果您的cookie存在于浏览器中,将发送。

cordova如何发送会话cookie,允许使用xmlhttprequest的凭据:

// JS
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/ajax.php', true);
xhr.withCredentials = true;
xhr.onreadystatechange = function() {
    if(xhr.readyState == 4 && xhr.status == 200) {
        // alert(xhr.responseText);
        // Get header from php server request if you want for something
        var cookie = xhr.getResponseHeader("Cookie");
        // alert("Cookie: " + cookie);
    }
}
xhr.send();
// Php 
// You can add cookie to header and get with (session works without it) 
header('Cookie: PHPSESSID='.$_COOKIE['PHPSESSID']);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, OPTIONS');
header('Access-Control-Allow-Headers: Origin, Content-Type, Accept, Authorization, X-Request-With, Set-Cookie, Cookie, Bearer');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400');

相关内容

  • 没有找到相关文章

最新更新