zoukankan      html  css  js  c++  java
  • 记一次坑爹的 “跨域” 问题

    由于(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 这个插件。帮助我调试了。

  • 相关阅读:
    【redis】主从复制
    【redis】订阅功能
    【redis】基础
    MySQL【十二】pymysql操作数据库
    MySQL【十一】创建索引
    MySQL【十】认识索引
    MySQL【九】树
    MySQL【八】多表查询
    ubuntu 制作ISO模块
    ubuntu 开机自启动
  • 原文地址:https://www.cnblogs.com/CyLee/p/8011081.html
Copyright © 2011-2022 走看看