将asp.net页面中的JavaScript代码注入另一个域中的html页面

时间:2014-05-22 12:45:32

标签: c# javascript jquery html asp.net

如何将来自asp.net页面的JavaScript代码注入另一个域中的html页面,例如http://www.codeproject.com/。如何从我的应用程序中将JavaScript注入到这个html页面

当我从我的应用程序打开html页面时,我正在制作一个像Pinterest一样的插件,它会像页面上的Pinterest一样显示一个书签。

以下是我用来注入JavaScript的代码

public partial class ViewPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
           string script = "javascript:(function(){var jsdom = document.createElement('script');jsdom.src = 'http://localhost:15064/Script/delete.js';document.body.appendChild(jsdom);})();";
           Response.Redirect(Server.UrlEncode(script));
    }
}

以下是我执行上述代码后得到的错误

enter image description here

2 个答案:

答案 0 :(得分:0)

相同的原始策略不允许您在其他人的域中运行脚本。如果这不存在,任何人都可以在任何域中运行脚本,这将是一个主要的安全风险。

此规则有几个*法律例外,您可以在下面阅读

https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy

在双方协议之外完成的唯一其他方式是违反同源并且可能是非法的。

Xss攻击非常常见,并按照您的描述进行操作。

答案 1 :(得分:0)

你可能得到的最接近的是书签:

http://www.mattcutts.com/blog/javascript-bookmarklet-basics/

这基本上是内联javascript的快捷方式。

野外的一个例子是X-Ray Goggles书签。您可以通过创建新书签并将位置粘贴为:

来添加它
javascript:(function(){var script=document.createElement('script');script.src='https://goggles.webmaker.org/en-US/webxray.js';script.className='webxray';script.setAttribute('data-lang','en-US');script.setAttribute('data-baseuri','https://goggles.webmaker.org/en-US');document.body.appendChild(script);})();

这不会让您从应用程序中注入,但它是一种从浏览器注入文档的方式。