预检请求会让服务器性能,使用CORS避免预检OPTIONS请求

我正在构建一个Angular应用程序,该应用程序与使用ASP.NET Web API 2构建的API交互.我使用基本身份验证通过向Authorization每个需要身份验证的请求发送标头:

Angular片段:

$http.defaults.headers.common['Authorization'] = authHeader;

请求:

Accept:application/json, text/javascript

Accept-Encoding:gzip, deflate, sdch

Accept-Language:en-US,en;q=0.8

Access-Control-Max-Age:1728000

Authorization:Basic [base64 encoded credential couplet here]

Connection:keep-alive

DNT:1

Host: blah.com

Origin:http://localhost:9000

Referer:http://localhost:9000/

User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/53

这一切都可以,但OPTIONS每次GET或POST请求都会发送预检请求.这主要影响应用程序的感知速度.我已经对CORS"简单请求"进行了大量阅读,似乎为了避免可怕的预检OPTIONS请求是为了避免在我的请求中添加任何自定义标头.我试过许多像发送其他的东西Content-Type的text/plain,但似乎授权头是违反CORS"简单的要求"的要求的东西.

所以我似乎不得不将API移到使用基于令牌的身份验证/授权.为了避免预检请求,似乎我需要将令牌放在查询字符串中.这是可以的,因为它只是一个小的内部网络应用程序,无论如何只能由几个用户访问.我打算在控制器响应上实现缓存.由于每个对控制器操作的请求都会根据当前经过身份验证的用户在查询字符串中具有不同的标记,这会使缓存无效吗?

所以:

如何避免预检请求(如果可能的话,使用自定义授权标头)

如果1.)不可能,并且我转移到基于令牌的身份验证,我将无法缓存控制器操作的API响应

什么是最广泛使用的方法来避免预检请求,还安全地授权用户?

nb我知道SO上和网上其他地方还有其他几个关于此的线程,但是没有一个关于是否有可能在使用自定义授权头时避免对GETs和POSTs的预检请求提供明确的答案HTTP.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值