Hos*_*ork 3 javascript firefox jquery json freebase
(注意:另请参阅相关问题浏览器是否可以对XSS jquery.getJSON()请求中的标头中指定的Set-Cookie做出反应?)
我似乎无法在JSON操作的请求标头中设置cookie(其名称为mwLastWriteTime).请求本身是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
Run Code Online (Sandbox Code Playgroud)
我希望我能用以下内容设置这个cookie:
$.cookie('mwLastWriteTime', value, {domain: ".sandbox-freebase.com"});
Run Code Online (Sandbox Code Playgroud)
不幸的是,在传出请求标题中查看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 [...]
Run Code Online (Sandbox Code Playgroud)
但是如果我没有指定域(或者我是否明确指定了请求站点的域),我可以mwLastWriteTime在头部显示本地请求.由于.sandbox-freebase.com域名拥有这些cookie,它们不应该与GET一起旅行吗?或者是否需要某种解决方法?
我的代码都是JavaScript,我想设置这个cookie,然后立即调用getJSON.
您无法设置跨域cookie,因为这会打开浏览器(以及用户)对XSS的攻击.
引用我在上面引用的QuirksMode.org文章:
请注意,域名的目的是允许cookie跨子域.我的cookie不会被search.quirksmode.org读取,因为它的域名是www.quirksmode.org.当我将域设置为quirksmode.org时,搜索子域也可能会读取cookie.我无法将cookie域设置为我不在的域,我无法创建域www.microsoft.com.在这种情况下,只允许使用quirksmode.org.
如果要使用cookie值进行跨站点请求,则需要在您控制的服务器上设置一个特殊代理,以便传递值作为cookie值发送(可能通过POST参数).您还需要确保正确保护它,以免您的代理成为"解放"其他人私人信息的手段.
| 归档时间: |
|
| 查看次数: |
3340 次 |
| 最近记录: |