[問題]利用AJAX去做上傳速度測試 卻遇到Access Denied問題

看板Web_Design作者 (oliwad)時間14年前 (2011/08/11 15:49), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
各位大大 小弟我目前想要利用AJAX和JAVASCRIPT來做一個讓使用者 可以去測試對某些測試主機上傳速度的function 一開始使用者連接進來一台固定的webserver webserver中會指定一個js file 在js file中我利用AJAX的XMLHttpRequest的open去開要測試的主機 (和webserver不同domain) 但是這樣在IE上遇到了Access Denied的問題 以下是我js file中連接到測試主機的function getconn是先去建立起XMLHttpRequest的物件 getandsend是連接要測試的主機後傳送資料過去 而傳送過去的資料即是用getdatatosend所產生出來的字串 在其他網站上 好像是說因為Cross Domain的問題 想請問各位大大是否有甚麼方式可以解決domain的問題 而且可以讓資料傳送得到對方主機來測試上傳速度呢 function getconn() { if (window.XMLHttpRequest) {//for Mozilla or safari conn = new XMLHttpRequest(); if (conn.overrideMimeType) { conn.overrideMimeType("text/xml"); } } else { if (window.ActiveXObject) {//for IE try { conn = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { conn = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { alert("Your web browser does not support AJAX!"); conn = false; } } } else { alert("Your web browser does not support AJAX!"); conn = false; } } return conn; } function getandsend(gdts, dts, gdtr, ftr, cte) { var params, fr; if (conn) { conn.onreadystatechange = function () { }; conn.abort(); } conn = getconn(); if (gdts == true) { params = getdatatosend(dts); } else { params = dts; } if (gdtr == true) { fr = getfiletoreceive(ftr); } else { fr = ftr; } conn.open("POST", SpeedInputURL +"/test/"+ fr + "?ref_id=" + parseInt(Math.random() * 10000), false) conn.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); conn.setRequestHeader("Content-length", params.length); conn.setRequestHeader("Connection", "close"); conn.onreadystatechange = function () { if (conn.readyState == 4) { var tfd = new Date(); tf = tfd.getTime(); if (scanstatus == true) setTimeout(cte, 0); } } var tsd = new Date(); ts = tsd.getTime(); conn.send(params); } function getdatatosend(xb) { if (xb == gdts) { return gdtsval; } else { var y = ""; var x; gdts = xb; xb *= 1024; if (xb > 0) { for (x = 0; x < xb; x++) { if (x == 1) { y += "="; } else { y += String.fromCharCode((x % 26) + 65);//look like that generate a string } } } gdtsval = y; return y; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.207.205

08/11 16:32, , 1F
ajax就是不能跨網域~硬要用的話就只能用iframe
08/11 16:32, 1F

08/11 16:51, , 2F
對於iframe我比較大的疑問是在iframe我有辦法執行這個js
08/11 16:51, 2F

08/11 16:52, , 3F
file中測試上傳速度的function嗎?而且將如何取到這個測試的
08/11 16:52, 3F

08/11 16:52, , 4F
值呢?
08/11 16:52, 4F

08/11 20:07, , 5F
不好意思 我發問的語氣不對 真抱歉
08/11 20:07, 5F
文章代碼(AID): #1EGubris (Web_Design)