iOS12 Beta 1 WKWebView CORS 解决方案

设备升级参考网上教程,有两个方案,建议后者: http://iphone.265g.com/faq/170567.html

一、 问题根源

在iOS12 Beta1中WKWebView跨域预检请求(OPTIONS)没能发出,导致真实请求没发出。

二、 问题解释

  1. OPTIONS请求何时发送?
    对于我们的App场景,在发送跨域的HTTP(s)动态请求之前,如果是复杂请求,默认都会先发OPTIONS,再发送POST。
  2. 哪些情况为复杂请求?
    a. 带了cookie,
    b. 带了自定义header字段的,
    c. content-type为applicaiton/json, application/xml, 静态类型的content-type不会发送options请求
    d. 其它待补充的

三、目前的解决方法

  1\. 降级到UIWebView(推荐方案)

 2\. 页面的SOA服务通过Native转发,走TCP通道,这样就不会有options请求。

 3.修改HTTP header,转成简单请求,避免CORS的预检请求,这种方案可行,但是开发测试成本较高。

        如: soa服务使用.json结尾,省去请求头Content-Type:application/json
cors_fail.png
cors_suc.png

推荐阅读更多精彩内容