免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3962 | 回复: 1
打印 上一主题 下一主题

html5 跨域异步数据请求问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-03-06 12:08 |只看该作者 |倒序浏览
场景如下,今天看到 HTML5 关于XMLHttpRequest Level2 的内容,  也就是HTML5的规范中新增加了跨域异步请求的 API , 我按照规范写了一个DEMO,代码如下
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4.         <meta charset="utf-8"/>
  5.         <title>跨域AJAX 数据上传</title>
  6.         <script type="text/javascript">
  7. function sendData(){
  8.         var xhr = new XMLHttpRequest();

  9.         if(typeof xhr.withCredentials == undefined){
  10.                 document.getElementById("support").innerHTML = "抱歉,你的浏览器不支持 跨域异步数据请求";

  11.                 return false;
  12.         }else{
  13.                 document.getElementById("support").innerHTML = "恭喜,你的浏览器支持 跨域异步数据请求"
  14.         }

  15.         xhr.upload.onprogress = function(e){
  16.                 var ratio = e.loaded/e.total;
  17.                 setProgress("up",ratio + "% uploaded");
  18.         }

  19.         xhr.onprogress = function(e){
  20.                 var ratio = e.loaded/e.total;
  21.                 setProgress("down",ratio + "% uploaded");
  22.         }

  23.         xhr.onload = function(e){
  24.                
  25.                 setProgress("up","upload compelete.");
  26.                 alert(xhr.responseText);
  27.         }

  28.         xhr.onerror = function(e){
  29.                 setProgress("up","ERROR");
  30.         }

  31.         var url = "http://my.bbs.com/test.php";

  32.         xhr.withCredentials = true;
  33.         xhr.open("POST",url,true);

  34.         xhr.send("this is a test data for upload");
  35. }

  36. function setProgress(id,str){
  37.         document.getElementById(id).innerHTML = str;
  38. }

  39.         </script>
  40. </head>
  41. <body>
  42. <h1>XMLHttpRequest Level2</h1>
  43. <input type="button" name="hd" value="上传数据" onclick="sendData()" />
  44. <div id="support"></div>
  45. <div id="up"></div>
  46. <div id="down"></div>

  47. </body>
  48. </html>
复制代码
服务器端出来如下

http://my.bbs.com/test.php 这个文件的代码如下
  1. <?php
  2. header("Expires: -1");
  3. header("Cache-Control: no-cache");

  4. header("Access-Control-Allow-Credentials: true");
  5. header("Access-Control-Allow-Orgin: http://www.yuetong.com");
  6. header("Access-Control-Allow-Methods: POST, GET, OPTIONS");
  7. header("Access-Control-Max-Age: max-age=1");
  8. header("Content-Type: text/html; charset=utf-8");

  9. print_r($_SERVER);
复制代码
跨域数据请求始终出错, 可以看到HttpFox 请求中看到 错误NS_ERROR_DOM_BAD_URI , 网上查了一下都是说是跨域被浏览器当做错误阻止了,
我测试用的浏览器版本为



不只错误在哪里了

参考文献地址 http://www.html5rocks.com/en/tutorials/cors/

未命名.jpg (137.95 KB, 下载次数: 10)

未命名.jpg

论坛徽章:
0
2 [报告]
发表于 2012-03-08 14:09 |只看该作者
求高手 啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP