最近工作遇到个问题,就是在air客户端中模拟登录某OTA站点获取到订单数据后,然后处理新订单时会出错,错误提示“不存在的订单号”,查询了好几天原因才发现竟然是我发送请求时的contentType不对。AS3中的URLrequest的contentType属性是data 属性中内容的 MIME 内容类型,其默认值是 application/x-www-form-urlencoded,但是之前有发送类似的请求,其mime类型为json格式,然后就没有注意到这个问题,一直以jsontype的格式发送,application/json;charset=UTF-8。导致浪费很多时间。还好终于发现并解决了。
发送 POST 请求时,contentType 和 data 属性的值必须正确对应。contentType 属性的值表示服务器如何解释 data 属性的值。
如果 data 属性的值是一个 URLVariables 对象,则 contentType 的值必须是 application/x-www-form-urlencoded。
如果 data 属性的值为其他类型,则 contentType 的值应表示将要发送的 POST 数据的类型(该数据为 data 属性的值中包含的二进制或字符串数据)。
对于 FileReference.upload(),请求的内容类型将自动设置为 multipart/form-data 并忽略 contentType 属性的值。
在 Flash Player 10 和更高版本中,如果使用包含上载(由 POST 体内的“content-disposition”标头中的“filename”参数表示)的 multipart Content-Type(例如“multipart/form-data”),则 POST 操作会受应用于上载的安全规则的约束:
必须执行 POST 操作以响应用户启动的操作(如鼠标单击或按键)。
如果 POST 操作是跨域的(POST 目标与发送 POST 请求的 SWF 文件不在同一台服务器上),则目标服务器必须提供一个允许跨域访问的 URL 策略文件。
另外,对于任何 multipart Content-Type,语法必须有效(根据 RFC2046 标准)。如果语法无效,则 POST 操作受应用于上载的安全规则约束。
AS3 URLRequest相关,浏览器请求头MIME类型引发的问题
最新推荐文章于 2020-11-18 11:37:22 发布