首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在asp.net web api中过滤本地请求?

在ASP.NET Web API中过滤本地请求,可以通过以下几种方法实现:

  1. 使用CORS策略

CORS(跨域资源共享)策略允许服务器指定哪些源可以访问其资源。在ASP.NET Web API中,可以使用Microsoft.AspNet.WebApi.Cors库来实现CORS策略。

首先,安装Microsoft.AspNet.WebApi.Cors库:

代码语言:txt
复制
Install-Package Microsoft.AspNet.WebApi.Cors

然后,在WebApiConfig.cs文件中启用CORS策略:

代码语言:csharp
复制
using System.Web.Http;
using System.Web.Http.Cors;

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        var cors = new EnableCorsAttribute("http://localhost:5000", "*", "*");
        config.EnableCors(cors);

        // 其他配置代码
    }
}

这将允许来自http://localhost:5000的请求访问ASP.NET Web API。

  1. 使用请求头过滤

在ASP.NET Web API中,可以通过检查请求头来判断请求是否来自本地。例如,可以检查请求头中的Referer字段,如果Referer字段包含本地地址,则允许请求,否则拒绝请求。

在WebApiConfig.cs文件中添加以下代码:

代码语言:csharp
复制
using System.Net.Http;
using System.Web.Http.Filters;

public class LocalRequestFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        var referer = actionContext.Request.Headers.Referer?.AbsoluteUri;
        if (referer != null && referer.StartsWith("http://localhost"))
        {
            base.OnActionExecuting(actionContext);
        }
        else
        {
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
            {
                Content = new StringContent("本地请求才能访问")
            };
        }
    }
}

然后,在需要过滤本地请求的API控制器或方法上添加LocalRequestFilterAttribute属性:

代码语言:csharp
复制
[LocalRequestFilter]
public class ValuesController : ApiController
{
    // 控制器代码
}

或者:

代码语言:csharp
复制
public class ValuesController : ApiController
{
    [LocalRequestFilter]
    public IHttpActionResult Get()
    {
        // 获取数据代码
    }
}

这样,只有来自本地的请求才能访问ASP.NET Web API。

  1. 使用IP地址过滤

可以通过检查请求的IP地址来判断请求是否来自本地。在WebApiConfig.cs文件中添加以下代码:

代码语言:csharp
复制
using System.Net;
using System.Net.Http;
using System.Web.Http.Filters;

public class LocalRequestFilterAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        var ipAddress = actionContext.Request.GetRemoteAddress();
        if (IPAddress.IsLoopback(ipAddress) || IPAddress.IsLocal(ipAddress))
        {
            base.OnActionExecuting(actionContext);
        }
        else
        {
            actionContext.Response = new HttpResponseMessage(System.Net.HttpStatusCode.Forbidden)
            {
                Content = new StringContent("本地请求才能访问")
            };
        }
    }
}

然后,在需要过滤本地请求的API控制器或方法上添加LocalRequestFilterAttribute属性,就像上面的示例一样。

这些方法可以帮助您在ASP.NET Web API中过滤本地请求。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

聊聊asp.netWeb Api的使用

扯淡到这就完了,下来就聊聊今天的主角web apiweb api 是mvc4.0之后出现的一种技术吧,他的创建和带来的便利我就不介绍了。这边文章主要聊聊,我对web api开发的一些理解。...FromBody]特性修饰符 FromBody是一个修饰参数的特性,比如:public void Post([FromBody]string name),那么他的作用是什么呢,其实他的作用是查询post请求参数为...,这个时候需要使用JObject来处理,代码如下: jQuery.post("/Api/Userinfo/Add/", { mobile: "18049579804", pwd: "123456...(Get & Post) 关键字区分:Get请求或者Post请求,可以用自身的关键字来区分,比如:GetUser(int id)肯定为get请求,Getxxx(params param)等格式为Get请求...当然还有一种方式,是没有关键字修饰的方法,比如:FindUser这种情况下,这种请求下默认是Post请求的Get请求就会报405的错。

1.4K60

Visual Studio 2012 ASP.NET Web API

SOAP 允许我们将我们的服务所需的所有知识放在信息本身",而"您可以使用 [Web API] 来创建只使用标准HTTP 概念 (URI 和动词)的HTTP服务,和创建使用更高级的 HTTP功能的服务...Old JSON) 服务,你能使用ASP.NET Web API做到这两点。...它是ASP.NET 开源的Web栈的所有部分。 ASP.NET Web API Samples on Codeplex,看到C# 协议对象如何在 JSON 世界和 C# 世界之间轻易来回移动了吗?...JSON.NET 和 ASP.NET Web API 的模型绑定提供了一个开心的介质——一个中间背景——被称为 JToken。...以上内容来自:微小的开心功能第2部分-Visual Studio 2012 ASP.NET Web API MVC4 WebAPI(一) MVC4 WebAPI(二)——Web API工作方式 http

3.2K80

Asp.Net Web API 2第八课——Web API 2的属性路由

前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导航进行查看 http://www.cnblogs.com/aehyok/p/3446289.html   路由就是Web API如何把...Web API支持一种新的路由类型,被叫做属性路由。顾名思义,属性路由是用属性来创建路由。在你的Web API属性路由可以让你更好的控制URI。你能容易的创建描述资源阶层的URIs。   ...当这个框架接收到一个请求时,它匹配一个URI到路由模版。...7、路由名称  在Web API,每个路由都有一个名称。路由名称被用于生成链接,你能在HTTP响应包含一个链接。 指定这个路由名称,在这个属性上设置RouteName属性。...本文参考链接http://www.asp.net/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2

84940

如何测量并报告ASP.NET Core Web API请求的响应时间

如何测量并报告ASP.NET Core Web API请求的响应时间 介绍 大家都知道性能是API的流行语。而相应时间则是API性能的一个重要并且可测量的参数。...让我们探索一些方法来捕获API的响应时间,主要集中在捕获API花费的时间。我们的目标是计算从Asp.net Core运行时接收请求到处理响应并从服务器返回结果所经过的时间(以毫秒为单位)。...如果您使用过早期版本的Asp.net Web API,那么您将熟悉Filter的概念。过滤器允许您在请求处理管道的特定阶段之前或之后运行代码。 我们将实现一个用于计算响应时间的过滤器,如下所示。...过滤器管道在MVC选择Action后执行。因此,它实际上无法检测在其他Asp.net管道花费的时间。 ?...第三次尝试 我们将使用Asp.net Core中间件来计算API的响应时间 所以,什么是中间件呢? 基本上,中间件是处理请求/响应的软件组件。中间件被组装到应用程序管道并在传入请求中提供服务。

1.9K10

何在过滤修改http请求体和响应体

参考springhttp请求的链路,选择过滤器来对请求和响应做加解密的调用。只需要在过滤对符合条件的url做拦截处理即可。...一般在过滤修改请求体和响应体,以往需要自行创建Wrapper包装类,从原请求Request对象读取原请求体,修改后重新放入新的请求对象中等等操作……非常麻烦。...如果可以在过滤只定义加解密的函数,然后调用一个API传入这些加解密函数,中间操作统统不管,这样用起来岂不是更爽!...重新分析不难发现在过滤的处理逻辑始终都是不变的,对于不同的加解密方式只有加解密函数是变化的。...过滤不会改变请求和响应的字符集,都是沿用原来的。 只能针对于带有请求体的请求做加解密处理。 另外modifyHttpData函数有另外的重载,支持修改Content-Type。

70130

web开发 web 容器的作用(tomcat)什么是web容器?web容器的作用容器如何处理请求URL与servlet映射模式

如果web服务器应用得到一个指向某个servlet的请求,此时服务器不是把servlet交给servlet本身,而是交给部署该servlet的容器。...要有容器向servlet提供http请求和响应,而且要由容器调用servlet的方法,doPost或者doGet。...web容器的作用 servlet需要由web容器来管理,那么采取这种机制有什么好处呢? 通信支持 利用容器提供的方法,你可以简单的实现servlet与web服务器的对话。...声明式实现安全 利用容器,可以使用xml部署描述文件来配置安全性,而不必将其硬编码到servlet。 jsp支持 容器将jsp翻译成java! 容器如何处理请求 ?...03.PNG 容器根据请求的URL找到对应的servlet,为这个请求创建或分配一个线程,并把两个对象request和response传递到servlet线程。 ?

2.2K20

入门:构建简单的Web API

这个入门文章主要演示在ASP.NET MVC3网站宿主: 如何使用NuGet向项目中添加Web Api引用 如何创建一个通过HTTP GET访问的Web Api 如何通过asp.net routes...宿主一个Web Api 如何通过浏览器或者Fiddler访问Web Api何在Api上启用OData uri查询 如何用WCF Web Test Client测试WCF Web API 1、创建一个基本的解决方案...选择是基于响应可得的表现形式(根据不同的维度,响应会不同;例如,语言,内容编码,等等)和请求消息里特定的头域或关于请求的其他信息(:网络客户端的地址)。...8、启用OData 查询支持 Web API支持OData协议,接受OData的URI格式查询,当OData 查询到达Web Api, 在返回客户端之前在服务端会进行必要的过滤和排序。...宿主一个Web Api 如何通过浏览器或者Fiddler访问Web Api何在Api上启用OData uri查询 如何用WCF Web Test Client测试WCF Web API 你可以在这里获取到代码

3.1K90

ASP.NET Web API的依赖注入什么是依赖注入ASP.NET Web API依赖解析器使用Unity解析依赖配置依赖解析

Web API控制器来支持对Product实体集的GET请求: namespace Pattern.DI.MVC.Controllers { public class ProductController...Web API在为请求映射了路由之后创建控制器,而且现在他不知道任何关于IProductRepository的细节,这是通过API依赖器解析到的。...ASP.NET Web API依赖解析器 ASP.NET Web API定义了一个IDependencyResolever用来解析依赖项目,以下是这个接口的定义: public interface IDependencyResolver...假如GetService方法返回NULL,ASP.NET Web API将查找一个无参的构造函数。...使用Unity解析依赖 虽然你可以重头开始写一个IDenpendencyResolver的实现,但是这个接口已经设计了可以作为ASP.NET Web API和IoC工具的桥梁。

2.2K80

跨域资源共享(CORS)在ASP.NET Web API是如何实现的?

在《通过扩展让ASP.NET Web API支持W3C的CORS规范》,我们通过自定义的HttpMessageHandler自行为ASP.NET Web API实现了针对CORS的支持,实际上ASP.NET...如果现在运行ASP.NET MVC程序,通过调用Web API以跨域Ajax请求得到的联系人列表依然会显示在浏览器上。...CORS系列文章 [1] 同源策略与JSONP [2] 利用扩展让ASP.NET Web API支持JSONP [3] W3C的CORS规范 [4] 利用扩展让ASP.NET Web API...支持CORS [5] ASP.NET Web API自身对CORS的支持: 从实例开始 [6] ASP.NET Web API自身对CORS的支持: CORS授权策略的定义和提供 [7] ASP.NET...Web API自身对CORS的支持: CORS授权检验的实施 [8] ASP.NET Web API自身对CORS的支持: CorsMessageHandler

2.4K110
领券