博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IIS下网站对options请求直接返回404
阅读量:5275 次
发布时间:2019-06-14

本文共 1295 字,大约阅读时间需要 4 分钟。

什么是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中进行配置:[网站]-[应用程序]-[处理程序映射]

2.检查iis服务器是否安装了UrlScan,若安装了请检查AllowVerbs中是否包含了options

可在iis中查看是否安装了UrlScan [网站]-[ISAPI筛选器] (可以找到UrlScan安装路径)
image

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

转载于:https://www.cnblogs.com/cplemom/p/10845434.html

你可能感兴趣的文章
8年javascript总结
查看>>
Flask的Debug功能非常酷
查看>>
[2018/11/14] 学习的思考
查看>>
android对话框弹出方式动画
查看>>
uml图
查看>>
动态添加JavaScript
查看>>
web-project 故障查看功能 检测是否启动fmd服务
查看>>
AssetBundle
查看>>
leetcode 861. 翻转矩阵后的得分
查看>>
MeteoInfoLab脚本示例:TRMM 3B43 HDF数据
查看>>
Just a Hook
查看>>
gentoo rt-thread scons --menuconfig libs/lxdialog/util.o: undefined reference to symbol 'nodelay'
查看>>
JAVA 入门(一)
查看>>
在.net2.0中实现Action和Func方法
查看>>
解释一下python中的//,%和**运算符
查看>>
VC++6.0中不兼容问题
查看>>
websphere、weblogic上JConsole的配置
查看>>
PHP中的数组
查看>>
PHP扩展-扩展的生成和编译
查看>>
Hello world!
查看>>