0

在 Firefox 中使用 Uploadify 无法在 Chrome 中使用。我只是不断从 Uploadify 收到 302 错误。经过一番摸索后,我发现这是因为 Flash 没有在其请求中保留任何会话信息(wtf?)。我看到了一些解决方案,涉及从 cookie 中获取会话 id 并将其传递给 uploadify 以便可以“重建”。

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

有什么办法可以解决这个问题,还是我必须通过多个 javascript 调用从调用视图一直传递这些 ID 才能到达 uploadify 部分?

4

2 回答 2

0

好吧,我最终以一种我不太喜欢的方式解决了它,但它必须这样做。由于我的 $.uploadify 调用位于 javascript 文件中,因此我无法访问所需的 cookie(它们是 HTTPONLY cookie)。所以我只是做了一个简单的服务器调用,然后从响应中抓取 cookie 并通过 formData 传递它们。

于 2012-09-13T23:08:31.547 回答
0

*有帮助吗?

在 Uploadify 中,Flash 文件是与后端脚本通信的内容。由于 Flash 中的错误,Flash 文件不会获取会话 cookie。为了避免这种情况,您需要通过 formData 选项传递会话数据。要在 PHP 中执行此操作,请在前端页面上初始化 Uploadify 时使用以下代码:

客户:

$('#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();
}

*当然也可以用 C# 来完成。

于 2012-09-12T22:40:19.570 回答