C# 如何防止在不同域中加载脚本

C# 如何防止在不同域中加载脚本,c#,javascript,asp.net,C#,Javascript,Asp.net,我有,可以在多个域中加载。 我想知道是否有办法控制它将加载到的域。 澄清一下:我的脚本是服务器端呈现的,所以如果请求的域无效,基本上我可以返回空字符串 这是为了防止其他网站嵌入我的脚本 谢谢 你就不能检查请求所涉及的域吗 请看,您可以通过HttpContext.Current.Request获得它 例如: if (HttpContext.Current.Request.Host.Containts("fred.com")) { return; // Or you could do a Re

我有
,可以在多个域中加载。 我想知道是否有办法控制它将加载到的域。 澄清一下:我的脚本是服务器端呈现的,所以如果请求的域无效,基本上我可以返回空字符串

这是为了防止其他网站嵌入我的脚本


谢谢

你就不能检查请求所涉及的域吗

请看,您可以通过HttpContext.Current.Request获得它

例如:

if (HttpContext.Current.Request.Host.Containts("fred.com")) {
   return; // Or you could do a Response.Write and Flush
}
您还可以将脚本代码嵌入到闭包中,只需在开头检查并返回:

(function() {

  if (location.hostname == "....") return;

  ...more code here...

})();

您可以检查推荐人,但这是由用户的web浏览器设置的,不是100%可靠


我认为没有办法100%检测哪个域嵌入了脚本。

您可以使用用于防止热链接图像的相同机制- 例如,apache上的mod_重写,或iis上的isapi筛选器


如果请求来自另一个域,请删除它,或者发送一个中性脚本。

JS不是一个选项,因为它很容易被黑客攻击。您在问题中没有提到这一点。检查request.NET端的Host属性-,您可以使用HttpContext.Current.request获取HttpWebRequest。我也想不出一个。检查请求头可能是最好的方法。您还可以检查引用者之外的内容,例如用户定义的键/值。