2014-10-28 3 views
1

Я динамически создавая IFRAME с формой на нем и представивший эту форму так:Невозможно добавить печенья через IFRAME

var iframe = $("<iframe id='download_iframe' style='display: none' src='about:blank'></iframe>"); 
//...building that form... 
form.appendTo(iframe.contents().find('body')).submit(); 

в URL, где этот запрос идет я генерация файла и настройки печенья подобных :

HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK); 
//...setting content type, disposition and etc... 
response.Headers.AddCookies(new[] 
            { 
             new CookieHeaderValue("ajaxFileDownload", "true") 
             { 
              Expires = DateTimeOffset.Now.AddDays(1), 
              Domain = Request.RequestUri.Host, 
              Path = "/", 
              HttpOnly = false 
             } 
            }); 

Так что я бы ожидать, что набор печенья после начала файла downlod и я могу видеть Set-Cookie в заголовках:

Cache-Control:private 
Content-Disposition:attachment; filename=engagement_list_28-10-2014.pdf 
Content-Length:60027 
Content-Type:application/pdf 
Date:Tue, 28 Oct 2014 16:12:09 GMT 
Expires:-1 
Pragma:no-cache 
Server:Microsoft-IIS/7.5 
Set-Cookie:ajaxFileDownload=true; expires=Wed, 29 Oct 2014 16:59:35 GMT; domain=localhost; path=/ 
X-AspNet-Version:4.0.30319 
X-MiniProfiler-Ids:["a8e9bef2-d31e-4f41-8896-9222d880544f"] 
X-Powered-By:ASP.NET 
X-Powered-By:ARR/2.5 
X-Powered-By:ASP.NET 

Но document.cookie и $("#download_iframe").contents()[0].cookie пустые Я даже не вижу этого файла cookie в ресурсах браузера. Что я делаю неправильно?

ответ

0

Это может быть вызвано страницей, которая создает iframe, загружаемую с хоста, отличного от localhost. Файл cookie создается для локального хоста, и если созданный HTML-файл загружается из файловой системы или какого-либо другого хоста, вы не сможете увидеть файл cookie.

Другие причины могут быть

1) политика куки для вашего браузера.

2) Время работы ОС, на котором работает браузер. Это больше, чем поле Expires?

+0

Может ли страница http: // about: blank вызвать проблему междоменного доступа? Я не уверен, как работает эта страница. – ToastyMallows