如何确定调用动态 JavaScript 文件的页面和 ASP.net 中的用户

How do I determine between a page calling a dynamic javascript file and a user in ASP.net

本文关键字:ASP net 用户 动态 调用 JavaScript 文件 何确定      更新时间:2023-09-26

我正在使用在 asp.net 中生成的动态JavaScript文件,然后作为普通的JavaScript嵌入到html页面中。有没有办法让我确定动态javascript是直接打开还是通过html页面中的嵌入式脚本打开?

<script src="http://localhost:60919/js.ashx" type="text/javascript" charset="utf-8"></script>

如果这是从网页调用的,您应该会看到 referer 属性中列出的加载页面。

context.Request.UrlReferrer

context.Request.ServerVariables["HTTP_REFERER"]

如果由用户直接加载,则此值为 null。但是,垃圾邮件发送者/黑客可以手动设置引用者,以独立于您的页面访问脚本。

更新: 处理程序.ashx:

<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
public class Handler : IHttpHandler {
    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/javascript";
        context.Response.Write("alert('"+context.Request.UrlReferrer+"');'n");
    }
    public bool IsReusable {
        get {
            return false;
        }
    }
}

默认值.aspx:

<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
    CodeFile="Default.aspx.cs" Inherits="_Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
    <script src="Handler.ashx"></script>
    <h2>
        Welcome to ASP.NET!
    </h2>
    <p>
        To learn more about ASP.NET visit <a href="http://www.asp.net" title="ASP.NET Website">www.asp.net</a>.
    </p>
    <p>
        You can also find <a href="http://go.microsoft.com/fwlink/?LinkID=152368&amp;clcid=0x409"
            title="MSDN ASP.NET Docs">documentation on ASP.NET at MSDN</a>.
    </p>
</asp:Content>

警报在网页加载时显示 http://localhost:port/Default.aspx。直接访问时,警报('')。