【问题标题】:php session upload progress stack with cross domainphp session 跨域上传进度栈
【发布时间】:2015-02-07 12:24:23
【问题描述】:

会话上传进度正常,但是当我将 from post url 从 pros.php 更改为 server_ip/pros.php 并更改 XMLHttpRequest JavaScript get url from

t.open("GET","progress.php",false);

t.open("GET","server_ip/progress.php",false);

它不起作用,所以我添加了progress.php header("Access-Control-Allow-Origin: *");,它仍然不起作用

progress.php:

  <?php 
error_reporting(0); 
header("Access-Control-Allow-Origin: *"); 
session_start(); 
$key = ini_get("session.upload_progress.prefix") . 'progressperc';
if(isset($_SESSION[$key]['bytes_processed']) 
   AND $_SESSION[$key]['bytes_processed'] != 0) { 
   $file_uploaded = true; 
   echo round($_SESSION[$key]['bytes_processed'] / $_SESSION[$key]['content_length'] * 100);
} elseif ($file_uploaded === true 
          AND $_SESSION[$key]['bytes_processed'] == 0) {
  echo 100; 
} 
?>

这是 index.php 中用于获取进度的 js 代码

<script>window.setInterval(function(){var t;if(window.XMLHttpRequest){t=new XMLHttpRequest}else{t=new ActiveXObject("Microsoft.XMLHTTP")}t.onreadystatechange=function(){if(t.readyState==4&&t.status==200){if(t.responseText=="100"){document.getElementById("progress").style.width=t.responseText+"%"document.getElementById("progress").innerHTML=t.responseText+"%";clearInterval()}if(t.responseText!=""&&t.responseText!="100"){document.getElementById("progress").style.width=t.responseText+"%";document.getElementById("progress").innerHTML=t.responseText+"%"}}};t.open("GET","progress.php",false);t.send(null)},5e3)</script>

【问题讨论】:

  • 这段代码是 PHP 还是 JS 还是 JQUERY?正确标记您的问题并在此处放置更多代码
  • 我认为 php 有问题
  • 如果是这样,PHP 中的代码在哪里? :-)
  • 这是progress.php代码
  • 如果我没记错的话,你之前有 .ajax(.post( 吗?你写了it is not work——这到底是什么意思?你有任何错误信息吗?你的标准是什么it is not work你的问题不清楚

标签: javascript php session upload


【解决方案1】:

Access-Control-Allow-Origin 因浏览器而异。大多数情况下,它仅在将表单从一个域提交到另一个域时使用。

默认禁止跨域http请求,但可以跨域json请求。您可以使用 header 以 json 格式返回 progress.php:

content-type:application/json.

如果你只是想显示一个上传进度值,你也可以尝试使用 JS hack(通过向 html 添加新标签,脚本将运行),或者制作进度图像(更新 img src)。两者都 100% 在所有浏览器上工作。

【讨论】:

  • 可能是seesion id的问题?
  • 在 json 中不好,我只需要进度值因为 img 我用 bootstrap 和 js 显示
猜你喜欢
  • 2014-07-22
  • 2014-06-30
  • 2015-06-25
  • 2019-04-05
  • 2016-03-19
  • 2011-11-23
  • 2020-01-04
  • 2023-03-25
  • 2012-04-28
相关资源
最近更新 更多