Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.getJSON是否可以放置一个域';在它发出的请求的标头中是否有Cookie?_Javascript_Jquery_Json_Firefox_Freebase - Fatal编程技术网

Javascript jQuery.getJSON是否可以放置一个域';在它发出的请求的标头中是否有Cookie?

Javascript jQuery.getJSON是否可以放置一个域';在它发出的请求的标头中是否有Cookie?,javascript,jquery,json,firefox,freebase,Javascript,Jquery,Json,Firefox,Freebase,(注:另见相关问题) 我似乎无法在JSON操作的请求头中设置cookie(其名称为)。该请求本身是来自Freebase MQL教程的一个简单请求,在其他方面工作正常: // Invoke mqlread and call the function below when it is done. // Adding callback=? to the URL makes jQuery do JSONP instead of XHR. jQuery.getJSON("http://api.sandbo

(注:另见相关问题)

我似乎无法在JSON操作的请求头中设置cookie(其名称为)。该请求本身是来自Freebase MQL教程的一个简单请求,在其他方面工作正常:

// Invoke mqlread and call the function below when it is done.
// Adding callback=? to the URL makes jQuery do JSONP instead of XHR.
jQuery.getJSON("http://api.sandbox-freebase.com/api/service/mqlread?callback=?",
{query: JSON.stringify(envelope)},   // URL parameters
displayResults);                     // Callback function
我希望我能在这个曲奇饼上放一些类似的东西:

$.cookie('mwLastWriteTime', value, {domain: ".sandbox-freebase.com"});
不幸的是,在FireBug中,我只看到传出请求头:

Host    api.sandbox-freebase.com
User-Agent  [...]
Accept  */*
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset  ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive  115
Connection  keep-alive
Referer [...]
但是如果我没有指定域(或者如果我明确指定了请求站点的域),我可以在本地请求的头中显示
mLastWriteTime
。既然
.sandbox freebase.com
域拥有这些cookie,它们不应该随GET一起移动吗?还是需要某种解决方法


我的代码都是JavaScript,我想设置这个cookie,然后立即调用getJSON。

您是否通过localhost运行所有测试?你在用IE吗?如果是这样,它将强制执行自己的特殊品牌的安全要求,并可能倾销您的cookies。打开fiddler并使用以绕过它

如果这种类型的欺骗行为没有发生(看起来您正在使用FireFox),那么您也可能需要明确地将cookie的域设置为与JSON请求的域相同。浏览器不会将为域A设置的Cookie发送到域B的请求。但我不能100%确定情况是否如此。

您,因为这会使浏览器(以及用户)受到XSS攻击

引述我在上文提及的内容:

请注意 域是允许cookie跨域的 子域。我的曲奇饼不会被吃掉 由search.quirksmode.org读取,因为 其域名是www.quirksmode.org。 当我将域设置为 quirksmode.org,搜索子域 也可以阅读cookie。我无法设定 将cookie域转换为我不是的域 在中,我无法创建域 www.microsoft.com。只有 在此情况下,允许使用quirksmode.org 案例


如果您希望使用cookie值进行跨站点请求,则需要在您控制的服务器上设置一个特殊代理,该代理将允许您传入要作为cookie值发送的值(可能通过POST参数)。您还需要确保对其进行适当的保护,以免您的代理成为“释放”其他人的私人信息的手段。

但是,服务器的回复肯定可以设置cookie。在我看来,这只是js中不应该做的事情。我想知道为什么有那么多API文档没有提到这一点,而是说“使用options对象,可以使用多个选项设置cookie,例如cookie应可用的域和/或路径、cookie的过期日期以及cookie是否应仅通过HTTPS发送。"! @敌意分叉——有时是因为作者假设知道XSS的限制,有时是因为作者不知道。在这种情况下,我打赌是前者。但是。。。是否无法使用JavaScript修改传出请求标头,以便在请求期间为其提供cookie值,如果没有实际读取或写入浏览器的cookie数据库?@Fork——当您设置cookie时,JavaScript实际上根本不会修改请求头——并且当请求不在同一域中的url时,它实际上没有任何权限访问浏览器发出的头。如果您在同一个域上,
XHR
对象确实有一个
setRequestHeader
方法,可用于设置头(这可以让您在不违反同一源策略的域上使用JavaScript更新cookie)。我的脚本在.com域上是“实时”的,正在请求api.sandbox freebase.com。显式地将域设置为脚本所运行的域将使其将cookie传递给本地请求,而不是传递给sandbox freebase。并且显式地将域设置为sandbox freebase不会使cookie出现在任何地方(它对我的域上的Firebug调试器是不可见的,可能是因为它在写入后没有读取它的权限…?)他们已经在下面介绍了您。