同源策略本地文件

时间:2019-01-25 04:03:43

标签: javascript same-origin-policy dhtml

我正在尝试编写一个简单的DHTML应用程序,该应用程序将选定的经典国际象棋游戏(* .txt)读入iframe,并从主页读取它,以便为用户播放。从我的HDD加载.html文件时,Chrome出现了同源策略(SOP)错误。我没有运气就在网上搜索答案。

chrome-disable-same-origin-policy-in-local-files
browser-same-origin-policy

当我第一次加载下面的网页时,主页可以从iframe访问HTMLdocument对象(未加载文件),但是我选择了test.txt(与主页相同的目录),却得到了一个空对象(错误:无法读取null的属性“ body”。)

Chrome会很快修复/启用本地文件的SOP,还是我想做的更好的方法。为了可移植性和易于共享,我不想安装本地Web服务器来使用这些应用程序。

<html><head><title></title>
<script language="JavaScript" type="text/javascript">
<!--
 function transferHTML(srcFrame){
        //take content of iframe to a Div element
   try{
     var frameDoc = srcFrame.contentDocument;
     alert("1. " + document.location + '\n2. ' + srcFrame.src);
         //Comparing the file origin
     alert("1. " + srcFrame + "\n2. " + frameDoc);
         //Comparing Object type
     this.document.getElementById("outerDisplay").innerHTML
           = frameDoc.body.innerHTML;
   }catch(e){
     alert("Error: " + e.message);
   }
   return false;
 }
//-->
</script></head>

<body id="topWindow">
  <INPUT TYPE="button" VALUE="test.txt"
              onClick="document.getElementById('iframeId').src='test.txt'" >
  <INPUT TYPE="button" VALUE="data/test2.html"
              onClick="document.getElementById('iframeId').src='data/test2.html'" >

  <div id="outerDisplay"></div>

  <iframe  id="iframeId" width="200" height="200"
            style="position:absolute; visibility:visible;"
         onload="transferHTML(this);">
         Your browser does not support iframes.
  </iframe>
</body>
</html>

0 个答案:

没有答案