2012-09-12 29 views
0

在Firefox中使用Uploadify时,在Firefox中使用Uploadify时不起作用。我只是不断从Uploadify获得302错误。经过多次讨论后,我发现这是因为Flash在其请求中没有保留任何会话信息(wtf?)。我看到了一些解决方案,包括从cookie中获取会话ID并将其传递给uploadify,以便“重建”。Flash Uploadify在调用我的MVC控制器时没有保留会话/授权

但是,会话id和auth id存储为httponly cookie,这意味着我无法通过javascript访问它们(据我所知)和我的$ .uploadify调用都是严格的.js文件。所有的解决方案都显示了使用Razor或原来的渲染引擎来抓取这些ID,这是我无法做到的。

有没有什么办法解决这个问题,或者我将不得不从调用视图中一直通过多个JavaScript调用来访问uploadify部分的这些ID?

回答

0

那么,我最终以一种我不喜欢的方式绕过它,但它必须做到。由于我的.uploadify调用是在JavaScript文件中,因此我无法访问我需要的cookie(它们是HTTPONLY cookie)。所以我只做了一个简单的服务器调用,从响应中抓取了cookie,并通过formData传递给它们。

0

可以this*有帮助吗?

在Uploadify中,Flash文件是与后端脚本通信的内容。由于Flash中存在错误,因此会话Cookie不会被Flash文件拾取。为了避免这种情况,您需要通过formData选项传递会话数据。

客户:

$('#file_upload').uploadify({ 
    // Your normal options here 
    formData : { '<?php echo session_name();?>' : '<?php echo session_id();?>' } 
}); 

服务器:

$session_name = session_name(); 

if (!isset($_POST[$session_name])) { 
    exit; 
} else { 
    session_id($_POST[$session_name]); 
    session_start(); 
} 

* 当然同样可以在PHP中做到这一点,前端页面初始化Uploadify时使用下面的代码用C#完成。

相关问题