记一次坑爹的 “跨域” 问题

由于(Android)webview的地址是file:// ,我猜测这是file相关的协议,而不是走http 协议的请求。

后端 API.NET 的 web.config 设置如下:

<system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <handlers>
          <remove name="ExtensionlessUrlHandler-Integrated-4.0" />
          <!--<remove name="OPTIONSVerbHandler" />-->
          <remove name="TRACEVerbHandler" />
          <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
    </handlers>
    <httpProtocol>
          <customHeaders>
                <add name="Access-Control-Allow-Origin" value="*" />
                <add name="Access-Control-Allow-Methods" value="*" />
                <add name="Access-Control-Allow-Headers" value="Content-Type" />
          </customHeaders>
    </httpProtocol>
</system.webServer>

事实上,在webview中压根是不走 <httpProtocol> 这些协议的。(猜测),所以一直正常的运行着,

直到我走了HTTP协议~才发现出现了问题。

总而言之~

请务必注意必须完美符合<customHeaders>的三项,笔者由于headers多设置了一个项,而这个项并不是Content-Type,导致了请求发不出去,

而浏览器却帮我发送了OPTIONS。让我误以为我的POST变成了OPTIONS请求,绕了一大圈,事实上也学了不少HTTP相关的内容。

http://www.ruanyifeng.com/blog/2016/04/cors.html

也多亏了 spy-debugger 这个插件。帮助我调试了。

原文地址:https://www.cnblogs.com/CyLee/p/8011081.html