最近在写Post请求时遇到好多坑,在经过一段时间的挣扎后有了初步的认识,加以备注。先了解下基础POST跨域发生了什么:https://itbilu.com/javascript/js/VkiXuUcC.html
有以下几点事项:
1、在Web.Config中添加跨域设置
<httpProtocol>
<customHeaders>
<!--响应类型 (值为逗号分隔的一个字符串,表明服务器支持的所有跨域请求的方法)-->
<add name="Access-Control-Allow-Methods" value="GET,POST,PUT,DELETE,OPTIONS"/>
<!--响应头设置(Content-Type:只限于三个值application/x-www-form-urlencoded、multipart/form-data、text/plain)-->
<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type,token"/>
<!--如果设置 Access-Control-Allow-Origin:*,则允许所有域名的脚本访问该资源-->
<add name="Access-Control-Allow-Origin" value="*" />
<!--<add name="Access-Control-Allow-Origin" value="http://domain1.com, http://domain2.com" /> 设置允许跨域访问的网址-->
<!--<add name="Access-Control-Max-Age" value="6000" /> 设置预检有效时间-->
<add name="Access-Control-Max-Age" value="6000" />
</customHeaders>
</httpProtocol>
2、在Action方法中添加post以及options特性
如果没有添加Options会报405错误
405 OPTIONS Method Not Allowed
3、设置嗅探有效期。
如果没有当前设置,会在每次POST请求的时候都会进行嗅探请求。