我有一个页面,允许用户下载动态生成的文件.生成需要很长时间,所以我想显示一个"等待"指标.问题是,我无法弄清楚如何检测浏览器何时收到文件,所以我可以隐藏指标.
我正在以隐藏的形式发出请求,该请求POST到服务器,并针对其结果定位隐藏的iframe.这样我就不会用结果替换整个浏览器窗口.我在iframe上监听"加载"事件,希望在下载完成后它会触发.
我在文件中返回"Content-Disposition:attachment"标题,这会导致浏览器显示"保存"对话框.但浏览器不会在iframe中触发"加载"事件.
我尝试过的一种方法是使用多部分响应.因此它会发送一个空的HTML文件,以及附加的可下载文件.例如:
Content-type: multipart/x-mixed-replace;boundary="abcde"
--abcde
Content-type: text/html
--abcde
Content-type: application/vnd.fdf
Content-Disposition: attachment; filename=foo.fdf
file-content
--abcde
Run Code Online (Sandbox Code Playgroud)
这适用于Firefox; 它接收空的HTML文件,触发"load"事件,然后显示可下载文件的"Save"对话框.但它在IE和Safari上失败了; IE触发"加载"事件但不下载文件,Safari下载文件(名称和内容类型错误),并且不会触发"加载"事件.
一种不同的方法可能是调用启动文件创建,然后轮询服务器直到它准备就绪,然后下载已经创建的文件.但我宁愿避免在服务器上创建临时文件.
有没有人有更好的主意?
登录$.ajax()到站点后,我尝试$.ajax()向该站点发送第二个请求 - 但是当我检查使用FireBug发送的标头时,请求中不包含会话cookie.
我究竟做错了什么?
下面是一个JavaScript cookie,写在用户的计算机上12个月.
在我们在主域上设置cookie之后example.com,如果用户访问子域test.example.com,我们需要继续在"test"子域中识别用户的活动.
但是使用当前的代码,一旦他们离开www.example.com并访问test.example.com,他们就不再被标记为"HelloWorld".
是否有人能够帮助我的代码允许跨子域读取cookie?
<script type="text/javascript">
var cookieName = 'HelloWorld';
var cookieValue = 'HelloWorld';
var myDate = new Date();
myDate.setMonth(myDate.getMonth() + 12);
document.cookie = cookieName +"=" + cookieValue + ";expires=" + myDate;
</script>
Run Code Online (Sandbox Code Playgroud) 我有一个ASP.net应用程序,它使用cookie来存储用户选择的语言.一切正常,除非我在localhost上.用127.0.0.1替换localhost使它再次工作......为什么?
我看到了对file://的预期限制,但我实际上找不到对localhost的预期限制的任何引用.
我无法理解的是为什么ASP.net会话(ASP.NET_SessionId)和ASP.net表单身份验证Cookie(.FSAUTHSSO)是为localhost域正确设置的,但我的cookie不是......为什么?!
我已经google了很多,没有任何作用:
那有什么关系呢?:)
为什么ASP.net cookie可以设置而我的不会?有什么不同?
最后一件事就是提到这也发生在IE上,但在FF上工作正常.
谢谢!
亚历克斯
好的,这真的有点开始让我烦恼.我有一个简单的Web项目设置位于:"C:\ Projects\MyTestProject \".在我的机器上的IIS中,我已经将虚拟目录映射到此位置,因此我可以在本地运行我的站点(我知道我可以从Visual Studio运行它,我更喜欢这种方法).我已将此虚拟目录命名为"mtp",我通过http://localhost/mtp/index.aspx访问它.这一切都很好.
但是,每当我尝试创建一个cookie时,它根本就不会被写出来?我在FF3和IE7中试过这个,它只是简单的不会写出cookie.我不明白.我的主机文件中有"127.0.0.1 localhost",我真的无法想到我能做的其他事情.谢谢你的建议.
詹姆士
我开发了几个显示在所有网站页面上的警报框.
用户可以分别关闭每个盒子:
$(document).ready(function() {
$("#close-alert-box-news").click(function() {
$("#alert-box-news").hide(800);
});
$("#close-alert-box-maintenance").click(function() {
$("#alert-box-maintenance").hide(800);
});
});Run Code Online (Sandbox Code Playgroud)
.alert-box {
width: 50vw;
position: relative;
margin: 20px auto;
border: 1px solid black;
}
.alert-box-close {
position: absolute;
top: -12px;
right: -12px;
cursor: pointer;
}Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">
</script>
<article class="alert-box" id="alert-box-news">
<h1>News Alerts</h1>
<p>text text text text text text text text text text text text text text</p>
<a class="alert-box-close" id="close-alert-box-news">
<img src="http://i.imgur.com/czf8yas.png" height="25" width="25" alt="">
</a>
</article>
<article class="alert-box" id="alert-box-maintenance">
<h1>Site Maintenance</h1>
<p>text text text text text …Run Code Online (Sandbox Code Playgroud)如何共享cookie跨源?更具体地说,如何将Set-Cookie标题与标题结合使用Access-Control-Allow-Origin?
这是我的情况的解释:
我正在尝试localhost:4000为托管在其上的Web应用程序中运行的API设置cookie localhost:3000.
我似乎在浏览器中收到了正确的响应标题,但不幸的是它们没有任何效果.这些是响应标头:
HTTP/1.1 200 OK Access-Control-Allow-Origin: http://localhost:3000 Vary: Origin, Accept-Encoding Set-Cookie: token=0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Max-Age=86400; Domain=localhost:4000; Path=/; Expires=Tue, 19 Sep 2017 21:11:36 GMT; HttpOnly Content-Type: application/json; charset=utf-8 Content-Length: 180 ETag: W/"b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Date: Mon, 18 Sep 2017 21:11:36 GMT Connection: keep-alive
此外,Response Cookies当我使用Chrome开发者工具的"网络"标签检查流量时,我可以看到cookie .但是,我看不到在"应用程序"选项卡下设置的cookie Storage/Cookies.我没有看到任何CORS错误,所以我假设我错过了其他的东西.
有什么建议?
我正在使用React-Redux应用程序中的请求模块/signin向服务器上的端点发出请求.对于服务器我使用快递.
快递服务器:
res.cookie('token', 'xxx-xxx-xxx', { maxAge: 86400000, httpOnly: true, domain: 'localhost:3000' })
在浏览器中请求:
request.post({ uri: '/signin', json: { userName: … 我有客户端javascript设置cookie这个真正奇怪的问题.我正在开发一个小页面的演示,目前使用cookie来存储一些'偏好'.请注意,我不能使用服务器端语言进行此演示或任何第三方jQuery插件.
所以我写了一个javascript对象来设置一个cookie:
var cookie = {
set: function (name,value,exdays) {
var exdate = new Date();
exdate.setDate(exdate.getDate() + exdays);
var value = escape(value) + ((exdays==null) ? "" : "; expires="+exdate.toUTCString());
document.cookie=name + "=" + value;
console.log(document.cookie);
}
}
cookie.set('foo','bar',2);
console.log(document.cookie);
Run Code Online (Sandbox Code Playgroud)
它只返回一个空字符串.我已经进入Chrome控制台,看看我是否可以通过直接修改来实现document.cookie
> document.cookie = "foo=bar";
"foo=bar"
> document.cookie
""
Run Code Online (Sandbox Code Playgroud)
你如何通过客户端javascript设置cookie?
编辑:我未处于隐身模式且已启用Cookie.
我需要为我的Sinatra应用程序使用cookie.如果我使用最简单的方法是有效的:
response.set_cookie('my_cookie', 'value_of_cookie')
Run Code Online (Sandbox Code Playgroud)
但我需要一些选项,如域名和过期日期,所以我试试这个:
response.set_cookie("my_cookie", {:value => 'value_of_cookie', :domain => myDomain, :path => myPath, :expires => Date.new})
Run Code Online (Sandbox Code Playgroud)
不起作用.没有cookie.我需要这么多......
请帮忙......谢谢!