相关文章推荐
发财的青椒  ·  Tencent 腾讯- 企業微信·  1 月前    · 
发财的青椒  ·  关于启用上海大学新版本企业微信的通知·  1 月前    · 
发财的青椒  ·  企业微信 - 上海财经大学网络信息中心·  1 月前    · 
发财的青椒  ·  企业微信怎么联系人工客服 - 百度经验·  1 月前    · 
聪明的瀑布  ·  微博超话如何创建 - 百度经验·  1 月前    · 
小百科  ›  Devtools PC端Remote Debug下所chunked模式解析错误 | 微信全面开放社区
remote 移动互联网
憨厚的小马驹
2 年前

交流专区
服务市场
微信学堂
文档
小程序
  • 常用主页

    小程序

    小游戏

    企业微信

    微信支付

  • 服务市场
    微信学堂
    文档
登录
公告列表
公告列表
收藏
分享

扫描小程序码分享

回答

置顶 Devtools PC端Remote Debug下chunked模式解析错误 精选 热门

陈军峰 06-03 614 浏览 问题模块: Bug反馈
框架类型 基础库版本 3.8.0 2.26.1

代码业务场景

基于chunked模式与后台通信,实现数据交换。

同一套代码,测试运行正常的运行场景:

1 在DevTool的开发环境下,运行正常。

2 在Remote Debug模式下,IOS端测试运行正常。

3 在体验版本下,IOS端运行正常

运行失败的场景:

1 在体验版下,PC端运行出错

2 在Remote Debug模式下,PC端运行出错

错误信息:

文字描述: servicewechat.com/wx…c939e3/0/index.js:3 Uncaught ReferenceError: global is not defined

由于无法直接看到index.js下的代码,所以无从定位问题,只能从现象看做推理了.....

分析过程以及初步得到的信息:

在Debug模式下,抓取IOS的请求如下:

在PC端的Debug模式下抓取同一个请求如下:

其中两者的差异:

1 响应中缺少了Transfer-Encoding:chunked的设置。(经过分析,Http2本身就不会返回上述信息)

2 二者使用http协议分别为1.1 和2

初步推测的可能:

分析1: 表面原因: The provided value 'stream' is not a valid enum value of type XWebXMLHttpRequestResponseType.

基于上述推测,在http2模式下,content-type: text/event-stream的不支持导致了global is not defined的error

分析2: 在目前nginx中的关键配置如下:

server {
        listen       443 ssl http2;
        listen       [::]:443 ssl http2;
        proxy_buffering off;
        chunked_transfer_encoding on;
        location /wx/api/v1/ {
            proxy_http_version 1.1;
            proxy_pass http://127.0.0.1:8090/wx/api/v1/;
            proxy_set_header Host $proxy_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_ssl_session_reuse off;
            proxy_ssl_server_name on;
            proxy_ssl_name $proxy_host;
            proxy_ssl_protocols TLSv1


其中开启了http2的支持,同时在proxy_http_version中指定了1.1版本。

按照设置,应该可以兼容http2的请求,并将结果顺利返回的。

分析3: 基于在IOS端,可以正常运行和访问的情况来推测,可以理解有以下两种可能性:

可能1: PC端默认使用http2,但是对于stream/chunked模式不支持,或支持的不完整,导致上述问题。

可能2: Nginx配置可能有问题,但是从已有资料来说,个人理解应该不是(如果说的不准确,欢迎大家拍砖)。

可能的解决方案:

方案1: 在PC端,与IOS端保持步调一致,使用http1.1,且支持完整(这里假定http1.1的stream模式之前就已经支持是完整的,只需做一下协议的降级即可,至少在mobile端是OK的)

方案2: 保持http2不变,修复上述问题(微信的responseType支持text和arraybuffer两种)

求助期望

希望帮忙看看这个问题,是否理解正确,且希望能够帮忙定位和解决一下。



              
回答 关注问题 邀请回答
收藏

扫描小程序码分享

复制链接
关闭

请选择投诉理由

  • 广告内容
  • 违法违规
  • 恶意灌水内容
  • 其他

删除当前帖子

删除后帖子内容及评论将一并被删除,且不可恢复。

删除 取消
关闭

确定删除?

删除后不可恢复

取消 确定
关闭

关注“微信开放社区”公众号

关注后,可在微信内接收相应的重要提醒。

请使用微信扫描二维码关注 “微信开放社区” 公众号

关闭

反馈

 
推荐文章
发财的青椒  ·  Tencent 腾讯- 企業微信
1 月前
发财的青椒  ·  关于启用上海大学新版本企业微信的通知
1 月前
发财的青椒  ·  企业微信 - 上海财经大学网络信息中心
1 月前
发财的青椒  ·  企业微信怎么联系人工客服 - 百度经验
1 月前
聪明的瀑布  ·  微博超话如何创建 - 百度经验
1 月前
Link管理   ·   Sov5搜索   ·   小百科
小百科 - 百科知识指南