Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google chrome HTTP POST负载在Chrome调试器中不可见?_Google Chrome_Post_Http Post_Google Chrome Devtools - Fatal编程技术网

Google chrome HTTP POST负载在Chrome调试器中不可见?

Google chrome HTTP POST负载在Chrome调试器中不可见?,google-chrome,post,http-post,google-chrome-devtools,Google Chrome,Post,Http Post,Google Chrome Devtools,我已经结帐离开了。但是,我的调试器如下所示 失败例子 没有表单数据,没有原始内容 原始示例(*虽然路径与屏幕截图不同,但两者都无法读取post数据) 注:(6) 成功范例 我发现了它们之间的差异(通过区分标题内容) 原始示例(*虽然路径与屏幕截图不同,但两者都无法读取post数据) 注:(6) 两个示例之间的标题差异 成功的一个正在使用,而失败的一个正在使用+browserify。但是,我仍在寻找一种方法来检查这是否是一个问题(未测试) 缺少X-request-With:XMLHttpR

我已经结帐离开了。但是,我的调试器如下所示

失败例子

没有表单数据,没有原始内容

原始示例(*虽然路径与屏幕截图不同,但两者都无法读取post数据)

注:(6)

成功范例

我发现了它们之间的差异(通过区分标题内容)

原始示例(*虽然路径与屏幕截图不同,但两者都无法读取post数据)

注:(6)

两个示例之间的标题差异
  • 成功的一个正在使用,而失败的一个正在使用+browserify。但是,我仍在寻找一种方法来检查这是否是一个问题(未测试)

  • 缺少
    X-request-With:XMLHttpRequest
    。但是,将此标头添加回请求并不能解决此问题(已测试)

  • 大写字母标题与小写字母标题字段(

    • 内容类型
      内容类型
      。但是,这种差异不是我在中尝试的问题的根本原因(已测试)

    • Accept
      vs
      Accept
      (未测试)

注:(5)(7)

不过,我不知道为什么
content type
中的第一个
c
是小写字母

注:(1)

我试过的 我在Firefox上试用过firebug。它可以显示我的负载。但是,它无法解析来自服务器的响应:'(

由于web服务器运行的是HTTPS协议,我无法通过wireshark捕获数据包。对调试POST请求有何建议?谢谢

通过命令行链接到关于调试HTTP(s)请求的链接。注意:(3)

我用的包装纸 我有一个承诺电话包装。下面是一个片段显示我使用的选项

/**
 * Wraps HTTPS module from nodejs with Promise
 * @module common/http_request
 */

var createRequestSetting = function (host, path, data, cookies) {
    return {
        method: 'POST',
        port:443,
        host: host,
        path: path,
        headers: {
            Accept: 'application/json, text/javascript, */*; q=0.01',
            'Content-Type':
                'application/x-www-form-urlencoded; charset=UTF-8',
            'Content-Length': Buffer.byteLength(data),
            'Cookie': cookies,
        },
        rejectUnauthorized: false,
    };
};

注:(2)

更新
  • (1) 我已经验证了字母
    c
    不会影响chrome调试器。下面是。我尝试用字母
    c
    模拟
    XMLHttpRequest
    的相同请求。我仍然可以在调试器中检查表单数据
  • (2) 链接到完整的源代码
  • (3) 指向关于测试HTTP(s)请求的脚本的链接
  • (4) 重新设置问题的可读性
  • (5) 示例在代码检查后未使用相同的绑定
  • (6) 添加原始标题示例
  • (7) 添加一个比较会话

您的代码看起来正常。您是否检查了Chrome控制台的错误? 如果您有权访问服务器(假设它在Linux上是
httpd
),您可以制作一个小CGI shell脚本来检查该端的头和数据:

#!/bin/bash

echo "Content-type: text/plain"
echo ""    
echo "Hello World. These are my environment variables:"
/usr/bin/env
if [ "$REQUEST_METHOD" = "POST" ]; then
    if [ "$CONTENT_LENGTH" -gt 0 ]; then
        echo "And this is my POST data:"
        /bin/cat
    fi
fi
exit 0

我刚刚注意到,如果您在Chrome调试器中的过滤器中选择“Doc”(在All、Xhr、Css、JS…旁边),您将无法看到POST数据。如果您选择“All”,则会显示.

虽然这不是原始问题的答案,但我的替代方案是将原始实现替换为表单数据es6 promise和同构获取

所有软件包都可以从npm下载


它工作得很好。

如果您的应用程序返回302状态代码,并且Chrome Devtools中没有有效负载数据,则可能是错误的

如果您正在开发或这是一个不会破坏任何内容的URL,一个快速、非常实用的解决方法是修改服务器端代码以发送200,例如在PHP中,您可以添加:

die(“过早退出-发送200”);

它会发出一个200状态码。这可以解决“302错误”——直到它被修复


p、 根据下面的@leo hendry,截至2017年12月,Canary已经有了修复程序,但是如果你没有其他理由运行Canary,那么并排运行另一个浏览器是不值得的,因为主线版本应该很快就会发布。

在所有平台上,Chrome v61和v62都有一个回归错误,导致了这种行为se(除其他外)是302。这在v63 stable中得到了修复,该版本于2017年12月6日发布到所有桌面平台

自动更新是分阶段进行的,但转到“帮助”/“关于Google Chrome”将强制它下载更新,并给你一个重新启动的按钮。有时需要关闭所有Chrome进程并手动重新启动以获得更新

(现已关闭)错误报告为。发布公告为


显然,这不是2015年原始海报问题的原因,但搜索该问题让我走到了这里。还要注意,这不仅仅是OS X问题。

如果这是一个bug,它在Mac和Windows上的表现可能会有所不同

下面的屏幕截图来自Windows上的Chrome63。您可以按预期看到请求负载部分

下面是我在Mac上运行的Chrome 65 Beta上看到的内容。请注意,请求负载部分缺失


我是否正确地假设错误没有被修复,或者我应该检查其他东西?

我可能在Chrome控制台(Chrome 69)上遇到了同样的问题

formdata和payload选项卡均未显示。 在我的场景中,我将enctype为“multipart/formdata”的表单发布到iframe(通过https将图像文件提交到同一来源)。它可以按预期工作,但我不知道如何在chrome中正确调试数据,因为它根本没有显示。我可以在PHP中转储数据,但这是不必要的,非常复杂,完全没有使用控制台的意义。我已经通读了上面建议的解决方案,但我没有设法解决这个问题。(响应代码是200 btw,而不是302)


我有另一个问题,当我的POST参数丢失时,甚至在后端和Chrome标题中,都是由于代码中的一个非常简单的错误

我只是错误地将params对象声明为普通数组:

var params = [];
而不是:

var params = {};
然后分配给它参数,结果是,我没有得到错误,但它不起作用:

params['param1'] = 'param1';
params['param2'] = 'param2';

$.post(url, params, function(data) {... 
通过这种方式,数据得到了更新
var params = [];
var params = {};
params['param1'] = 'param1';
params['param2'] = 'param2';

$.post(url, params, function(data) {...