asp.net – 避免使用CORS进行预检OPTIONS请求
我正在构建一个与使用ASP.NET Web API 2构建的API进行交互的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 这一切都可以正常工作,但是每个GET或POST请求都会发送一个预检OPTIONS请求.这主要影响了应用程序的感知速度.我在CORS“简单请求”上做了很多阅读,似乎为了避免可怕的预检OPTIONS请求是避免在我的请求中添加任何自定义标头.我尝试了许多其他的东西,例如发送文本/简单的Content-Type,但是似乎授权标题是违反CORS“简单请求”要求的事情. 所以似乎我可能需要将API移动到使用基于令牌的身份验证/授权.为了避免预检请求,似乎需要将令牌放在查询字符串中.这是可以的,因为它只是一个小的内部网络应用程序,只有几个用户无论如何访问.我打算在控制器响应上实现缓存.由于对控制器动作的每个请求都将在基于当前验证的用户的查询字符串中具有不同的令牌,这会使缓存无效吗? 所以: >如何避免预检请求(如果可能,使用自定义授权标头) n.b我知道SO和其他网络上有其他一些线程关于这个,但是没有一个提供一个明确的答案,可以避免在使用自定义HTTP授权标头时避免GETs和POST的预检要求. 解决方法
我认为这个帖子(
How to apply CORS preflight cache to an entire domain)几乎说了这一切 – 你可以做的不多
一个简单的解决方案是向服务于角度应用程序(例如nginx)的代理/网络服务器添加一个反向代理,以通过相同的域路由您的RESTful呼叫,例如appdomain.com/api – > apidomain.com. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 用于错误处理和丢失图像的HttpModule
- asp.net-mvc-3 – 如何在asp.net mvc3中添加一组单选按钮
- asp.net mvc 中使用async/await异步编程
- asp.net-mvc – 将HttpContext.Current.User.Identity传递给
- 使用嵌套类的ASP.NET MVC3 JSON模型绑定
- asp.net – 是否可以强制WebControl呈现为而不是?
- ASP.NET RadioButton混淆名称(组名)
- asp.net – 是否可以隐藏asp:repeater中的列?
- asp.net-mvc – 如何显示图像从路径在asp.net mvc 4和剃刀视
- asp.net-mvc-4 – ASP .Net MVC 4 Authorize和AllowAnonymo
- asp.net mvc – asp.net mvc Html.ActionLink()保
- ASP.net – 通过Query-String缓存(VaryByParam)
- asp.net – 如何为多行TextBox设置maxlength?
- asp.net – 表单身份验证可以忽略returnUrl
- asp.net-core – asp.net核心自定义模型绑定器,仅
- asp.net – Visual Studio开发服务器不更新css和
- 是否可以优化ASP.NET WebForms以便像ASP.NET MVC
- asp.net – 在创建cookie时,如何指定www而不是ww
- asp.net-mvc – 使用Facebook和Twitter登录ASP.N
- asp.net-mvc – 在ASP.NET MVC应用程序中实现细粒