【问题标题】:unidentified red dots (json) in chrome network panel response tabchrome网络面板响应选项卡中的不明红点(json)
【发布时间】:2015-10-25 16:45:11
【问题描述】:

我正在使用 slim 框架开发一个 API,当我用 postman 测试这个 api 时,内置的 phostorms 工具可以正常工作并返回有效的 json。但是当我从角度调用它时,它不会被角度解析。它显示了意外的索引错误。

我尝试在网络选项卡中监视有效负载,令人惊讶的是在实际的 json 响应之前附加了一些红色的子弹标记,例如点。

但它没有显示在预览选项卡中..

我不知道这些点在哪里。我用谷歌搜索了一下,找到了关于 Windows 上 BOM 问题的方法。但我不知道如何解决它。 你能帮我理解问题并纠正它吗?这是由代码或数据库或其他原因引起的问题吗?

关于我正在使用的信息

  • 操作系统:Windows 7,
  • 浏览器:谷歌浏览器,
  • 前端 MVC:角度(问题只发生在这里),
  • 后端:Slim 框架 (PHP),
  • 数据库:Mysql(表和列在 utf8mb4_bin 和 latin1_swedish_ci 之间有混合排序规则)
  • IDE:PHPStorm 8

编辑:来自提琴手的截图 我用 fiddlr 看看发生了什么,这里是 response的十六进制视图@

【问题讨论】:

  • 在运行 Fiddler 工具的情况下运行请求,您可以准确地看到那些红色的不可打印字符实际上是什么
  • 后端 API 是否运行在与页面相同的域和端口上?听起来您遇到了 CORS 问题,响应中的空格无关紧要
  • 是的,现在两者都在本地主机中运行。
  • 如果我有 CORS 问题,我可以在 chrome 中看到错误,对吗? @charlietfl
  • 通常看到的不是错误而是警告。 Postman 对跨域请求没有相同的安全限制,这就是它在那里工作的原因。我仍然假设端口不同?

标签: php json angularjs google-chrome slim


【解决方案1】:

最后我找到了一个解决方法来摆脱它,但它不应该真正用于生产。由于我在前端工作的时间很紧,所以我只是将其用作修复。

我在开始时使用了输出缓冲 ob_start() 并在我回显 json ob_clean() 之前清理了缓冲区,这会从响应中删除所有字符。但仍然无法弄清楚是什么原因。我正在等待遇到同样问题的人的回复。

【讨论】:

    【解决方案2】:
    ob_start();
    try(){
        //
    }catch(){
       //
    }finally(){
      ob_end_clean();
    }
    

    【讨论】:

    • 使用 finally 块和 ob_end_clean() 函数来清理 BOM 字符
    猜你喜欢
    • 2015-09-25
    • 2021-11-21
    • 2017-05-20
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 2020-01-08
    • 2015-10-10
    相关资源
    最近更新 更多