判断请求是通过点击链接还是直接输入网址

代码如下:

/**
     * 判断请求是通过点击链接还是直接输入网址
     * @param request
     * @return
     */
    public static boolean isFromClickUrl(HttpServletRequest request){
    	String refer = request.getHeader("Referer");
    	String host = request.getHeader("Host");
    	if(host != null){
    		if(refer == null || "".equals(refer)){
        		//此情况为在浏览器中输入地址
        		return false;
        	}else{
        		String[] urls = refer.split("//");
        		if(urls != null && urls.length > 1){
        			String tmpHost = urls[1].substring(0,urls[1].indexOf("/"));
            		//判断是否是从我们的主机发起的请求
        			if(host.equals(tmpHost))
        				return true;
        			else
        				return false;
        		}
        	}
    	}
    	return false;
    }


转载于:https://my.oschina.net/wpengfei/blog/268515

在C语言中,为了识别HTTP请求,通常会检查请求头中的特定字段,特别是"User-Agent"字段。HTTP请求包括各种头部信息,其中包含了浏览器、服务器等客户端提供的详细信息。 下面是一个简单的示例代码片段,展示了如何从HTTP请求输入流(如socket连接)读取并检查"User-Agent"字段: ```c #include <stdio.h> #include <string.h> int main() { char request[4096]; // 预留空间接收HTTP请求内容 int read_len; // 实际读取到的内容长度 // 假设已经通过某种机制(比如网络套接字)读取到了HTTP请求到request数组中 if ((read_len = strlen(request)) > 0) { char *ptr = strstr(request, "\r\nUser-Agent:"); if (ptr != NULL) { // 找到了"User-Agent:"这一行 ptr += strlen("\r\nUser-Agent:"); // 跳过"User-Agent:"部分 while (*ptr && isspace(*ptr)) // 移除空白字符 ++ptr; while (*ptr && !isspace(*ptr)) { // 找到最后一个空格或者'\n' printf("Client Agent: %c", *ptr); ++ptr; } printf("\n"); } else { printf("No HTTP User-Agent found.\n"); } } else { printf("Failed to receive the HTTP request content.\n"); } return 0; } ``` 这段代码首先通过`strlen()`函数获取HTTP请求内容的长度,并利用`strstr()`查找"User-Agent:"字符串。如果找到这个字符串,则跳过它并开始扫描直到遇到下一个空格或换行符为止,以此来提取客户端的代理信息。这只是一个基本的例子,实际处理HTTP请求可能需要更复杂的方式来解析整个HTTP报文,例如使用专门的库如libcurl或者nginx的解析器。 -
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值