如何在Safari 4中调试XHR POST请求?

3

我有一个XHR请求,在Firefox 3.5中成功,但在Safari 4中似乎失败。我正在Safari的调试器和Firefox的Firebug中查看xhr请求。

因此,在被访问的后端服务上,如果POST参数中缺少用户名和密码,则该服务会返回500错误。如果存在参数(即使是不正确的),它将根据错误返回200或40x。

无论如何,使用相同的代码,非Safari浏览器都可以工作。Safari会得到500错误,就像用户/密码没有被传递一样。

当我在调试器中检查请求时,它似乎不显示日志中的POST数据。

是否需要启用选项或者如何在Safari 4中调试这些请求?


响应体中是否有任何内容?即使是一个 " " 空格? - Crescent Fresh
你能把相关的代码粘贴过来吗? - kangax
2个回答

5
如果您正在提到Safari的“Web Inspector”:它确实不会在使用Ajax发送时显示POST数据。我会使用类似Wireshark的数据包嗅探器(但只是因为我也用它做其他事情),或者使用调试代理

请检查一下您的POST是否调用了setRequestHeader来设置所需的HTTP头,例如ConnectionContent-TypeContent-Length?由于您的代码在Firefox中可以工作,我认为您实际上是使用send设置了POST内容的。请在JS Bin中发布您的代码!

(仅供档案记录:除了通过defaults.write启用debug菜单外,Safari 4还具有一个Develop菜单,您可以通过高级首选项轻松启用。选择“显示Web检查器 ⌥⌘I”,您应该能够在资源选项卡上看到请求和响应。确保选择“按开始时间排序”。如果XHR通过GET发送,则显然必须查看请求URL本身,它会被很好地显示。但是,对于POST,请求头会显示,但POST数据则缺失。我从未使用过debug菜单。)

我在Safari中遇到了500服务器错误,但是xhr.setRequestHeader("Content-Type", file.type);解决了问题。谢谢! - D.Tate

3
截至今天(Safari 7.1),如果您在“资源”选项卡下的“XHRs”文件夹中选择此类XHR,则POST请求数据将出现在右侧边栏中: Select an XHR from the Resources Tab in Safari Web Insepctor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接