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。我也想不出一个。检查请求头可能是最好的方法。您还可以检查引用者之外的内容,例如用户定义的键/值。