Flash Uploadify在调用我的MVC控制器时没有保留会话/授权
问题描述:
在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?
答
那么,我最终以一种我不喜欢的方式绕过它,但它必须做到。由于我的.uploadify调用是在JavaScript文件中,因此我无法访问我需要的cookie(它们是HTTPONLY cookie)。所以我只做了一个简单的服务器调用,从响应中抓取了cookie,并通过formData传递给它们。
答
可以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#完成。