我正在为我的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');