IIS下网站对options请求直接返回404
2024-08-24 16:14:28
什么是options请求
options请求为发送非简单跨域请求前的预检请求,若该请求未正常返回,浏览器会阻止后续的请求发送。
一般情况下,有三种方式会导致浏览器发起预检请求
1.请求的方法不是GET/HEAD/POST
2.POST请求的Content-Type并非application/x-www-form-urlencoded, multipart/form-data 或 text/plain
3.请求中设置了自定义的header字段(如Token)
浏览器发出请求但直接返回404
若未对iis进行配置,则会导致options请求被iis直接响应返回,而不会进入到代码中。这也是Global中的Application_BeginRequest无法捕获到options请求的原因。
1.检查webconfig中的配置,是否移除了对options请求的特殊处理
可在iis中进行配置:[网站]-[应用程序]-[处理程序映射]
<system.webServer>
<handlers>
<remove name="OPTIONSVerbHandler" />
</handlers>
</system.webServer>
2.检查iis服务器是否安装了UrlScan,若安装了请检查AllowVerbs中是否包含了options
可在iis中查看是否安装了UrlScan [网站]-[ISAPI筛选器] (可以找到UrlScan安装路径)
UrlScan的配置文件为UrlScan.ini (C:\Windows\System32\inetsrv\urlscan\UrlScan.ini)
将OPTIONS从[DenyVerbs]中移除并添加到[AllowVerbs]下
3.在Global的Application_BeginRequest实践中直接响应options请求
//允许所有的options请求,直接返回200状态码
private void Application_BeginRequest(object sender, EventArgs e)
{
if (HttpContext.Current.Request.HttpMethod == "OPTIONS")
{
HttpContext.Current.Response.StatusCode = 200;
HttpContext.Current.Response.Headers["Access-Control-Allow-Origin"] = HttpContext.Current.Request.Headers["origin"];
HttpContext.Current.Response.End();
}
}
4.在webconfig中的Allow-Method中添加上options
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET" />
<add name="Access-Control-Allow-Headers" value="x-requested-with,aspxauth" />
<add name="Access-Control-Allow-Credentials" value="true" />
</customHeaders>
</httpProtocol>
</system.webServer>
最新文章
- MIT研发的新型匿名网络Riffle,下一个Tor
- 页面引入flash
- 论文笔记之:Progressive Neural Network Google DeepMind
- JAVA基础学习day21--IO流三-File、Properties、PrintWriter与合并、分割流
- Yii cookie 的使用方法
- php通过正则从字符串中获取所有图片url地址
- 安装Oracle11g时,检测到系统的主 IP 地址是 DHCP 分配的地址
- 简单的linux命令笔记
- TCP protocol
- xcode 3.x版本中的Executables 到xcode 4.x中怎么找不到了?
- DOS命令教学之详解批处理
- 如何通过友盟分析发布后App崩溃日志-b
- 【Git】自动化Maven项目构建脚本(一)
- 使用Jquery.js框架和CSS3实现3D相册的制作
- 【Flask】 使用Flask-Moment进行日期时间的管理
- Chapter 4 Invitations——28
- iOS has conflicting provisioning settings 解法
- 对于Spring中注入对象失败的问题
- charles使用:iOS11的手机用charles抓包https
- Mac Terminal open app with a file opened
热门文章
- HDU-4249-A Famous Equation(DP)
- x:Static ;, ;StaticResource ;和DynamicResource等XAML ;扩展用法
- WPF ListView 居中显示
- Emgu-WPF学习使用 - 颜色映射
- linq to entity GroupBy多个字段
- linux系统的ssh服务开启方法
- 【WPF】wpf用MultiBinding解决Converter需要动态传参的问题,以Button为例
- nprogress.js 头部进度条使用方法
- G1 安装 Linux Debian system
- CKEditor 4.5 beta 发布,可视化 HTML 编辑器