iOS12 Beta 1 WKWebView CORS 解决方案
2018-06-20 本文已影响127人
SkyTrip
设备升级参考网上教程,有两个方案,建议后者: http://iphone.265g.com/faq/170567.html
一、 问题根源
在iOS12 Beta1中WKWebView跨域预检请求(OPTIONS)没能发出,导致真实请求没发出。
二、 问题解释
- OPTIONS请求何时发送?
对于我们的App场景,在发送跨域的HTTP(s)动态请求之前,如果是复杂请求,默认都会先发OPTIONS,再发送POST。 - 哪些情况为复杂请求?
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