如果你这个服务是只针对网站的注册用户及登录才可以使用的话,那肯定简单,只要对状态判断下就好了!
第一种:但如果无状态的连接的话,你可以用ip来限制,通过配置在配置文件里配置自己的机器的ip,这样就可以防止了!如果只有自己的服务器可以访问,你可以直接配置成内网的ip,这样没法伪造了!
第二种:session ashx中默认不能使用session, HttpContext.Current.Session 为 null。
解决方法如下:
增加命名空间引用,实现指定接口
<%@ WebHandler Language="C#" Class="Handler" %>
using System;
using System.Web;
using System.Web.SessionState;
public class Handler : IHttpHandler, IRequiresSessionState {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
}
public bool IsReusable {
get {
return false;
}
}
}
如果你的数据是敏感内容,或需要保护,你可以这样,在页面首次载入时,在Session中存入:Guid.NewGuid(),并将这个guid发到发到页面隐藏域中,让js在回传时作为参数提交,提交时ashx审查提交的guid是否符合Session中存储的guid,符合就返回数据。
楼上正解,LZ可以查一下ashx防盗链的使用方法,也许有帮助;