AuthorizationFilter身份验证信息

最近被跨域问题搞得焦头烂额,在前端ajax往服务器端发送请求的时候,我尝试在请求报文header里面自定义请求头:

$.ajax({
   
         type: "GET",
         url: 'http://localhost:49420/api/v1/User/GetById?id=1',
         dataType: "json",
         headers: {
   
             AppKey: "fasdf2236afasdZ98",
             Sign: "6930718a6a0395349c20b9b409a52c72"
         },
         success: function(data, status) {
   },
         error: function(error) {
   }
     });

后端服务器:

 
 IEnumerable<string> appKeys;
            if (!actionContext.Request.Headers.TryGetValues("AppKey",out appKeys)) 
                   {
    
                    return new HttpResponseMessage(System.Net.HttpStatusCode.Unauthorized)
                   {
   
                       Content = new StringContent("报文头中的AppKey为空")
                   };
            }

可是本来以为这样写没问题,可是浏览器端一直给我返401:Unauthorized错误,并且提示 已拦截跨源请求:同源策略禁止读取远程资源。(原因:CORS 请求未能成功)

各种方法尝试了,未果。。。。

之后发现是服务器端未验证通过客户端的methods,需要在AuthorizationFilter过滤器的最开始,验证请求报文的方法是不是options,如果不是直接打回,是的话返回200:Accepted,然后进行后面AuthorizationFilter的验证。

string method = actionContext.Request.Method.ToString()
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值