`
xiaotian_ls
  • 浏览: 308154 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

脚本中出现 window.open() access is denied - 拒绝访问 情况一则及分析

阅读更多
也许这个状况有的朋友已经知道了,但我还是把自己的分析思路写下来给其他的朋友参考。

昨天把blog页面另存在,在本地调试和改blog皮肤。

简介:
我想在onload页面加载完时用脚本控制,把Run HTML code, CopyCode, SaveCode这三个按扭动态的添加到css类名为code_textarea的多行文本框里。

状况描述:
在非服务器端(即没有在本地服务器下调试)按扭已经全部出现在多行文本框下,但在调试脚本时(点击Run HTML code),出现拒绝访问...服务器下调试正常。

分析:
查看代码,发现是这里脚本出错,代码如下:
function fnRunHtmlCode(obj)
{
//try {
//if (typeof(obj)=="string") obj=document.getElementById(obj);
var wnd = window.open('', "_blank", '');
wnd.document.open('text/html', 'replace');
wnd.document.writeln(obj.value);
wnd.document.close();
//} catch(ex) { alert(ex.message) };
};
用Mozilla打开,运行正则,并且脚本没有任何错误。弄了将半个小时,我把其余的代码都删了,在Mozilla中把动态生成的div和button代码copy出来察看,把在IE上动态加载的button拷贝到dw里看,没有异常。包括把上面的function放在另外一个页面上运行,依然是正常,并把这个function单独改成了window.open('','','')还是拒绝访问。

既然是拒绝访问,一般情况下肯定是跨域了,但本地调试,没有加其它的代码呀,怎么跨域?百思不得其解。
于是想先放上blog再说了。奇怪的是放上服务器又可以了,于是我把本地的页面放到本地服务器下运行,也是正常。这回就更蹊跷了。说是IE bug?不成立,因为服务器可以运行。代码问题?不成立,因为在其它页面正常,而且没有涉及到其它的代码。只是funtion,说明肯定是下载的这页有问题,难道CSDN blog输出的HTML页有document.domain类似的代码吗?

分步调试成功:
把原先所有的代码不需要的地方全部去掉(包括Html)。最终简化如下:

Copy Code(拷贝代码)-Run HTML(运行代码)-Save Code(另存代码)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>never-online 's Tech Blog In CSDN - JS & DHTML</TITLE>
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
function addEvent(o,w,f) {
if (document.all) {
o.attachEvent('on'+w, f);
} else {
o.addEventListener(w, f, false);
}
}
function fnRunHtmlCode(obj)
{
var wnd = window.open('', '', '');
};
function fnReadyToRunHTMLcode() {
insertRunHtmlBtn(document.getElementById("demo"));
function insertRunHtmlBtn(obj) {
var wrapper = document.createElement("DIV");
wrapper.style.margin="10px 0 10px 0";
var runBtn = document.createElement("INPUT");
runBtn.type = "button";
runBtn.value = "Run HTML Code";
addEvent(runBtn, "click", function() { fnRunHtmlCode(obj) });
obj.parentNode.insertBefore(wrapper, obj.nextSibling);
wrapper.appendChild(runBtn);
}
//} catch (ex) {}
}
onload = fnReadyToRunHTMLcode;
</script>
<div class="postText">
<textarea class="code_textarea" id="demo">
</textarea>
</div>
</body>
</html>

运行依然如故。
于是再把DTD去掉。

Copy Code(拷贝代码)-Run HTML(运行代码)-Save Code(另存代码)
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>never-online 's Tech Blog In CSDN - JS & DHTML</TITLE>
<META content="MSHTML 6.00.2800.1400" name=GENERATOR>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<script type="text/javascript">
function addEvent(o,w,f) {
if (document.all) {
o.attachEvent('on'+w, f);
} else {
o.addEventListener(w, f, false);
}
}
function fnRunHtmlCode(obj)
{
var wnd = window.open('', "_blank", '');
wnd.document.open('text/html', 'replace');
wnd.document.writeln(obj.value);
wnd.document.close();
};
function fnReadyToRunHTMLcode() {
insertRunHtmlBtn(document.getElementById("demo"));
function insertRunHtmlBtn(obj) {
var wrapper = document.createElement("DIV");
wrapper.style.margin="10px 0 10px 0";
var runBtn = document.createElement("INPUT");
runBtn.type = "button";
runBtn.value = "Run HTML Code";
addEvent(runBtn, "click", function() { fnRunHtmlCode(obj) });
obj.parentNode.insertBefore(wrapper, obj.nextSibling);
wrapper.appendChild(runBtn);
}
//} catch (ex) {}
}
onload = fnReadyToRunHTMLcode;
</script>
<div class="postText">
<textarea class="code_textarea" id="demo">
</textarea>

运行正常~~~知道原因所在了。
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
这句害我找了半天的原因,总算刨它出来了,证明这句另存为的代码在IE下是会有跨域存在的,而Mozilla对这句没有任何反应。

后记:
对于另存为出现的注释代码
<!-- saved from url=....-->
放在HTML任何部分,在本地非服务器端调试都会有拒绝访问的错误,而Mozilla不会。如:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/1999/xhtml">
<head></head>
<body>
<!-- saved from url=(0053)http://blog.csdn.net/BlueDestiny/category/184440.aspx -->
<input type="button" value="run" onclick="window.open('','','')"/>
</body>
</html>

track:http://www.never-online.net/blog/article.asp?id=53
分享到:
评论

相关推荐

    arm-2014.05-29-arm-none-linux-gnueabi

    arm-none-linux-gnueabi-gcc.exe -v Using built-in specs. COLLECT_GCC=arm-none-linux-gnueabi-gcc.exe COLLECT_LTO_WRAPPER=d:/eclipse/cross/arm-2014.05-29/bin/../libexec/gcc/arm-none-linux-gnueabi/4.8.3/...

    cudnn-linux-x86-64-8.9.0.131-cuda12-archive.tar.xz

    cudnn8.9.0,适用于cuda12.X版本,Linux(centos、ubuntu)系统

    libsigar-amd64-linux.so libsigar-x86-linux.so

    标题中的“libsigar-amd64-linux.so”和“libsigar-x86-linux.so”是两个重要的库文件,它们属于Sigar(System Information Gatherer and Reporter)库,一个跨平台的系统性能监控工具。在Java应用程序中,这些动态...

    frida-server-16.0.13-android-arm64

    标题中的"frida-server-16.0.13-android-arm64"指的是Frida Server的一个特定版本,这是用于Android设备的动态代码插桩工具。Frida是由 Ole André Vadla Rønning 开发的一款强大的开源软件,它允许开发者在运行时...

    LNMP 解决Access Denied错误详细介绍

    处理搭建好LNMP环境之后,呈现了Access Denied错误 搭建好LNMP环境之后,呈现了Access Denied错误,现已扫除掉文件权限的问题也扫除掉是Nginx的问题,而是无法解析PHP的问题。 发现网上的很多大牛都是经过Nginx的...

    mysql-5.7.31-macos10.14-x86_64.tar.gz

    MySQL是世界上最受欢迎的开源关系型数据库管理系统之一,尤其在Web应用程序中被广泛使用。这个压缩包文件"mysql-5.7.31-macos10.14-x86_64.tar.gz"包含了适用于Mac OS X 10.14(Mojave)操作系统的MySQL 5.7.31版本...

    mssql-server-14.0.1000.169-2.x86-64.rpm

    mssql-server-14.0.1000.169-2.x86_64.rpm 下载真的是太慢了太慢了太慢了

    tomcat9用户访问配置问题_403Access Denied 无法访问server、Manager、Host Manager

    可能会遇到一种较为常见的问题:即配置完成后,虽然能够正常访问Web应用,但在尝试访问后台管理界面(如Server Status、Manager App、Host Manager)时却收到“403 Access Denied”的错误提示。这一问题不仅限于本地...

    frida-server-12.11.1-android-arm64.xz

    frida 用处就不多说了,大家都知道,这是当前最新版,官网下载太慢了

    2021-Access-Denied:拒绝访问

    标题 "2021-Access-Denied:拒绝访问" 提到的是一个关于Sitecore的安全问题,具体可能是指在尝试访问或操作Sitecore系统时遇到的权限限制或身份验证错误。Sitecore是一款强大的内容管理系统,主要用于构建和管理企业...

    frida-server-14.0.8-android-arm64

    frida-server-14.0.8-android-arm64 ,frida 14.0.8 对应的安卓server内容,下载之后push到手机即可开始使用

    SpringSecurity 3.0.1.RELEASE.CHM

    &lt;access-denied-handler&gt; B.1.3. &lt;intercept-url&gt;元素 B.1.3.1. pattern B.1.3.2. method B.1.3.3. access B.1.3.4. requires-channel B.1.3.5. filters B.1.4. &lt;port-mappings&gt;元素 B.1.5. &lt;form-login&gt;...

    cmake-3.24.1-linux-x86_64.tar 在Linux x86_64中用来安装cmake

    从cmake官网上下载的,适合在Linux x86_64中用来安装cmake,如果自己下载太慢的友友可以试一下,其余安装步骤可以参考https://blog.csdn.net/m0_37605642/article/details/119845189

    解决VSS中Access to file \"\\\\...\\rights.dat\" denied的错误

    标题中的“解决VSS中Access to file \"\\\\...\\rights.dat\" denied的错误”指的是在使用Visual SourceSafe(VSS)版本控制系统时遇到的一个常见问题。Visual SourceSafe是一款由Microsoft开发的旧版源代码管理工具...

    libaio-0.3.109-13.el7.x86_64.rar

    在系统处于内网状态,无法使用yum进行下载时可以在这里进行下载解压,然后使用rpm -ivh进行安装

    node-v16.12.0-darwin-arm64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 ...

    Git-2.29.2.2-64-bit.exe安装包

    4. **选择组件**:在自定义安装中,你可以选择是否安装Git Bash(提供一个类似Linux命令行的环境)、Git GUI(图形用户界面)和其他可选工具。此外,还可以决定是否在右键菜单中添加Git命令,方便快速执行Git操作。 ...

    hugging face的models-openai-clip-vit-large-patch14文件夹

    用于无法访问hugging face并需要运行stable-diffusion-webui时使用

    连腾讯云上的docker上的mysql报错ERROR 1045 (28000): Access denied for user ‘root’@’localhost’ (using password:

    ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 解决: 1.打开在创建mysql容器时挂载的conf目录下的mysqld.cnf(如下文件) 我创建docker的姿势 2.进入mysqlId.cnf文件中在...

    jcifs java远程访问

    Java Community Interface for File Systems (JCIFS) 是一个开源的Java库,它允许Java应用程序通过SMB(Server Message Block)协议来实现对网络上共享资源的访问。标题中的“jcifs java远程访问”指的是使用JCIFS库...

Global site tag (gtag.js) - Google Analytics