我在 CORS 环境中工作正常。我可以在 IE8 + IE9 中显示成功响应,进度条变为绿色,响应数据为成功,以及附加到 json 响应的脚本标记,我的图像正在上传到服务器.. 一切都很好。
不过,我有点难以让相同的代码在现代浏览器中工作。例如,Chrome 正在返回成功 true 并且 json 块返回上传的图像(正确上传到服务器),但是响应具有脚本标签,并且插件向用户显示错误响应..所以我几乎就在那里,一切正在工作,但无论使用哪种浏览器,都会添加脚本标签。
现在,根据以下页面:http ://blog.fineuploader.com/2013/01/31/cors-support-in-3-3/ ,'传入的上传请求是通过隐藏的表单提交发送的iframe 如果请求没有 X-Requested-With 标头,或者 X-Requested-With 标头的值不是XMLHttpRequest
'. 所以我在 php 中检查以下变量:echo $_SERVER['HTTP_X_REQUESTED_WITH'];
并且它在 Chrome 中返回为未定义。
我的完整检查如下:
if ((!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) || (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] != "XMLHttpRequest")) {
header("Content-Type: text/html");
$result['uuid'] = $_REQUEST['qquuid'];
echo json_encode($result);
echo "<script src=\"http://".$_SERVER['HTTP_HOST']."/frontend/js/iframe.xss.response-3.7.1.js\"></script>";
} else {
header('Content-Type: text/plain');
echo json_encode($result);
}
因此,无论浏览器如何,首先如果块失败并且我每次都返回脚本响应。
我可以在我的选项响应标头中看到允许的“X-Requested-With”标头。但是我没有看到这个值是通过实际的上传请求传递的,所以很明显它不能在 if 语句中检查。所以我可以看到我的代码在哪里失败,我只是不确定我需要做什么才能在第二次调用中获取标题,我需要手动添加它吗?..
有点迷失,将不胜感激任何帮助。谢谢。
更新这是我正在使用的 代码 http://shapevoid.com/code.png