我正在为我的AppleTV开发一个应用程序。这个应用程序将从一个没有为这类事情开发任何API的在线网站上读取电影。
我使用XMLHTTPRequest来获取不同的URL,并让用户搜索他的电影,等等……除了一个请求之外,一切都运行得很好。为了获得电影的URL,我必须用一个常量cookie (假设mycookie=cookie)发送一个get请求到一个特定的地址(假设是http://example.com/getmovie.html)。
我尝试过使用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。
感谢你的帮助
发布于 2017-02-16 07:25:35
我很抱歉地通知您,由于安全原因,javascript的xmlHTTPRequest函数不允许设置Cookie头,如下所示:Why cookies and set-cookie headers can't be set while making xmlhttprequest using setRequestHeader?我能看到您发出get请求的最好方法是发送到您将要运行的代理服务器。我相信它是以这种方式构建的,以防止您在您不拥有的域名上设置cookie,此外,我没有看到这个问题的替代解决方案,因为在我查看的文档中没有提到cookie持久性或管理
发布于 2017-02-16 20:56:22
如果有人有同样的问题:
我没有找到用javascript发送cookie的解决方案。然而,在我的情况下,请求的来源并不重要,只有cookie才重要。然后,我的解决方案是创建一个PHP文件,接收目的地URL和cookie内容作为参数,然后使用cookie作为请求头发送get请求。(有关如何执行此操作的更多信息,请访问:PHP GET Request, sending headers)。
在我的javascript中,我使用XMLHttpRequest通过简单的get参数连接到我的PHP文件(在线托管),然后收到来自PHP的响应。当然,如果请求的来源很重要,这个技巧就不会起作用(我猜,除非你在家里托管文件,但在我的例子中,即使我的WAMP没有打开,我也希望我的应用程序能工作)。
发布于 2019-10-01 02:26:48
好吧..。这里的问题是xhr.setRequestHeader('Cookie', 'mycookie=cookie');
行,因为“Cookie”头是为客户端浏览器发送存储的Cookie而保留的。这意味着你正在尝试做浏览器已经做过的事情。当您发送any请求时,客户端浏览器将自动获取与您请求的站点相关的所有cookie,并将它们放在“cookie”头上,您不需要做其他任何事情,如果您的cookie存在于浏览器中,它将被发送。
https://stackoverflow.com/questions/42260885
复制相似问题