1.在访问页遇到重定向,Get,Post跳转处理,在跳转后的页面获取访问端的IP,他们的IP是否发生变化。。。

2.重定向处理后获取的IP还是访问端IP,而用Get,Post请求处理后,获取的访问端IP则是处理页的IP。

3.获取客户端IP的代码

   public string GetClientIP()
{
HttpContext current = HttpContext.Current;
string userHostAddress = string.Empty;
if (current != null)
{
if ((current.Session != null) && (current.Session["cnki_sys_user_remote_addr"] != null))
{
userHostAddress = current.Session["cnki_sys_user_remote_addr"].ToString();
if (!string.IsNullOrEmpty(userHostAddress))
{
return userHostAddress;
}
}
userHostAddress = "127.0.0.1";
userHostAddress = current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
if (string.IsNullOrEmpty(userHostAddress))
{
userHostAddress = current.Request.ServerVariables["REMOTE_ADDR"];
if (string.IsNullOrEmpty(userHostAddress))
{
userHostAddress = current.Request.UserHostAddress;
}
}
else
{
string[] strArray = userHostAddress.Split(new char[] { ',' });
if ((strArray.Length > ) && !string.IsNullOrEmpty(strArray[strArray.Length - ]))
{
userHostAddress = strArray[strArray.Length - ];
}
}
if (current.Session != null)
{
current.Session["cnki_sys_user_remote_addr"] = userHostAddress;
}
}
return userHostAddress;
}

4.向mvcapi中发出的Post和Get请求,以及返回信息的接收和处理代码。

 public class ECPManage
{
public Result GetResultFromConfig(string config, params string[] para)//config是mvcapi的处理路径,para是参数。
{
string getUidUrl = string.Format(ConfigurationManager.AppSettings[config], para);
string retJSON = SendGet(getUidUrl).TrimStart("?(".ToCharArray()).TrimEnd(')');
using (System.IO.MemoryStream ms = new System.IO.MemoryStream(System.Text.Encoding.UTF8.GetBytes(retJSON)))
{
System.Runtime.Serialization.Json.DataContractJsonSerializer serializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Result));
Result t = (Result)serializer.ReadObject(ms);
return t;
}
}
/// <summary>
/// 发送post请求,返回信息
/// </summary>
/// <param name="uri"></param>
/// <param name="data"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public string SendPost(string uri, string data, string encoding = "utf8")
{
using (WebClient wCient = new WebClient())
{
if ("utf8" == encoding)
{
wCient.Encoding = Encoding.UTF8;
}
else
{
wCient.Encoding = Encoding.Default;
}
return wCient.UploadString(uri, data);
}
}
/// <summary>
/// 发送get请求,返回信息
/// </summary>
/// <param name="uri"></param>
/// <param name="encoding"></param>
/// <returns></returns>
public string SendGet(string uri, string encoding = "utf8")
{
using (WebClient wCient = new WebClient())
{
if ("utf8" == encoding)
{
wCient.Encoding = Encoding.UTF8;
}
else
{
wCient.Encoding = Encoding.Default;
}
return wCient.DownloadString(uri);
}
}
}

302重定向,MVC中的Get,Post请求。的更多相关文章

  1. asp.net MVC中防止跨站请求攻击(CSRF)的ajax用法

    参考: Preventing Cross-Site Request Forgery (CSRF) AttacksValidating .NET MVC 4 anti forgery tokens in ...

  2. ASP.NET MVC中防止跨站请求攻击(CSRF)

    转载   http://kevintsengtw.blogspot.co.nz/2013/01/aspnet-mvc-validateantiforgerytoken.html 在 ASP.NET M ...

  3. Spring MVC中如何解决POST请求中文乱码问题,GET的又如何处理呢

    在web.xml中配置过滤器 GET请求乱码解决: 在Tomcat中service.xml中

  4. 【Spring MVC】spring mvc中相同的url请求返回不同的结果

    在项目中凡是使用Spring MVC这种控制器的,大多都是返回JSON数据对象,或者JSP页面. 但是相同的URL请求如何让他自动的选择放回的是什么? 在这里有由于鄙人没有亲自测试过,就不敢乱贴代码, ...

  5. MVC中如何避免POST请求中出现的重复提交

    使用惯了Asp.Net的服务器控件了, 突然转到MVC框架上来遇到这么个问题. 比如说网速慢的时候, 用户频繁的点击提交按钮, 或者是按F5刷新页面等等.解决方法很简单. 解决方案 1. 在页面生成时 ...

  6. 如何在.Net Mvc中让Get,Post请求访问同一个Action的方法

    [HttpPost] [ActionName("Index")] public ActionResult Post(Models.WeChatRequestModel model) ...

  7. Asp.net MVC中Route的理解

    在Asp.net MVC中,对于一个请求,是通过路由找到对应的Controller类中的对应Action,并与model进行交互,最后返回到view. 就是说Asp.net MVC是用Route来定义 ...

  8. ASP.NET MVC中使用Ninject

    ASP.NET MVC中使用Ninject 在[ASP.NET MVC 小牛之路]系列上一篇文章(依赖注入(DI)和Ninject)的末尾提到了在ASP.NET MVC中使用Ninject要做的两件事 ...

  9. Asp.net MVC 中使用 Ninject 实现依赖注入

    松耦合.针对抽象编程.不针对实现编程是面向对象设计的原则.依赖注入就是,在一个类的内部,不通过创建对象的实例而能够获得实现了某个公开接口的对象引用.所谓的控制反转也是相同的意思.把依赖的创建转移到了使 ...

  10. Chrome在302重定向的时候对原请求产生2次请求的问题说明

    这个问题应该确确实实是一个Chrome的BUG,我在自己的编程环境中发现,并在多个服务器,多个编程语言的运行环境,以及多个浏览器下都测试过,都看到有2次请求出现.为了证明不是自己环境的问题,我也特意去 ...

随机推荐

  1. Java多线程小结

    简述 Java是支持多线程编程的语言,线程相比于进程更加轻量级,线程共享相同的内存空间,但是拥有独立的栈.减少了进程建立.销毁的资源消耗.jdk1.5后对java的多线程编程提供了更完善的支持,使得j ...

  2. JSP http头消息

    头 描述 Accept 指定MIME类型 Accept-Charset 编码,例如utf-8 Accept-Encoding 编码方式,例如使用gzip压缩 Accept-Language 语言,例如 ...

  3. SystemTimeToFileTime、FileTimeToLocalFileTime、LocalFileTimeToFileTime三函数的跨平台实现

    // test.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdlib.h>   #include & ...

  4. OpenGL中的投影使用

    OpenGL中的投影使用 在OpenGL中,投影矩阵指定了可视区域的大小和形状.对于正投影与透视投影这两种不同的投影类型,它们分别有各自的用途. 正投影 它适用于2D图形,如文本.建筑画图等.在它的应 ...

  5. [rxjs] Throttled Buffering in RxJS (debounce)

    Capturing every event can get chatty. Batching events with a throttled buffer in RxJS lets you captu ...

  6. GitHub与Versions

    [第一步]建立先仓库 第一步的话看一般的提示就知道了,在github新建一个repository(谷歌可以解决),都是可视化的界面操作,所以难度不大.或者看这里:https://help.github ...

  7. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载

    原文:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/ Zookeeper 分布式服务框架是 Apache Hadoop ...

  8. Day02 - Python 基本数据类型

    1 基本数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 1.1 数字 数字数据类型用于 ...

  9. cookie记录用户名和密码

    getAttribute和getParameter的区别: request.getAttribute():是request时设置的变量的值,用request.setAttribute("na ...

  10. oracle数据库敏感操作前创建还原点

    我们都知道,在vmware虚拟机中有一个拍摄快照的功能,我们可以把系统此时的状态保存下来,一方后面遇到不测事件,也好将系统还原,oracle中也有类似功能. 首先创建一张学生表: 向学生表中插入一条数 ...