账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Node尝试用axios请求一个网站的时候无法爬取,报ecx_key_op:invalid encoding是什么原因?
    96
    0
    尝试用node的request以及axios爬取网站都发送这个错误是什么原因??Error: write EPROTO 3168:error:1010A066:elliptic curve routines:ecx_key_op:invalid encoding:c:\ws\deps\openssl\openssl\crypto\ec\ecx_meth.c:65:3168:error:141A4132:SSL routines:tls_process_ske_ecdhe:bad ecpoint:c:\ws\deps\openssl\openssl\ssl\statem\statem_clnt.c:2231: at WriteWrap.onWriteComplete [as oncomplete] (internal/stream_base_commons.js:94:16) { errno: -4046, code: 'EPROTO', syscall: 'write'}
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 似温柔亦苍白、 普通会员 2楼

      "ecx_key_op:invalid encoding" 是一个常见的 Axios 请求错误,表示请求参数的编码不正确。这个错误通常在 Node.js 中发生,特别是在使用 Axios 或其他第三方 HTTP 客户端库进行 POST 请求时。以下是可能导致该错误的一些常见原因:

      1. Request Header Encoding: Axios 对请求头的编码可能会有所不同,某些头名或值可能需要特殊编码。例如,如果你正在使用 UTF-8 编码,但是请求头中的编码是 ascii, Axios 将无法正确解析。为了解决这个问题,你需要确保请求头中的所有编码都是 UTF-8 或其兼容的编码。

      2. URL编码: Axios 需要将请求URL编码为标准 URL 格式,包括查询字符串、参数、分隔符等。如果你的 URL 中包含非 UTF-8 编码的字符,如非 ASCII 字符, Axios 将无法解析它们。确保 URL 的编码格式是正确的,如 URLencoded 或 URLdecoded。

      3. Header Parsing: Axios 会解析 HTTP 请求头中的各种键值对。如果某些键值对的编码与你的请求头中的编码不匹配, Axios 将无法正确解析它们。例如,如果你在请求头中使用 "Content-Type" 为 "application/json",但是请求体中的内容编码是 "application/x-www-form-urlencoded", Axios 将无法正确解析它们。

      4. Invalid Request Body: Axios 使用 "request.body" 来接收 POST 请求体的数据。如果你的请求体中的数据编码与你的请求头中的编码不匹配, Axios 将无法正确解析它们。例如,如果你在请求体中使用 "application/json",但是请求头中的编码是 "application/x-www-form-urlencoded", Axios 将无法正确解析它们。

      5. Response Encoding: Axios 需要将响应体中的数据编码为标准 URL 格式,包括查询字符串、参数、分隔符等。如果你的响应体中的数据编码与你的请求头中的编码不匹配, Axios 将无法正确解析它们。例如,如果你在响应体中使用 "application/json",但是请求头中的编码是 "application/x-www-form-urlencoded", Axios 将无法正确解析它们。

      为了修复这个错误,你可以尝试以下方法:

      1. 检查 Request Header Encoding:检查你的 Axios 请求头中的编码是否正确。确保所有的请求头都是 UTF-8 或其兼容的编码。例如,如果你的请求头中包含非 UTF-8 编码的字符,例如包含换行符的 URL,你需要将换行符转换为 URL encoded 或 URL decoded。

      2. URL编码你的 URL:确保你的 URL 中的编码是正确的,如 URLencoded 或 URLdecoded。避免使用 URL 中的空格、换行符等非 UTF-8 编码的字符。

      3. 检查 Header Parsing:检查 Axios 对请求头的解析是否正确。确保所有的头部值都是正确的 URL 格式。例如,如果你的请求头中使用 "Content-Type" 为 "application/json",但是请求体中的内容编码是 "application/x-www-form-urlencoded",你需要确保你的头部值的值也符合 URLencoded 或 URLdecoded 的格式。

      4. 检查 Invalid Request Body:检查你的 POST 请求体中的数据编码是否与你的请求头中的编码匹配。如果数据编码与请求头中的编码不匹配,你需要确保数据的编码也是 UTF-8 或其兼容的编码。例如,如果你在请求体中使用 "application/json",但是请求头中的编码是 "application/x-www-form-urlencoded",你需要确保数据的编码也是 URLencoded 或 URLdecoded 的格式。

      5. 检查 Response Encoding:检查 Axios 对响应体中的数据编码是否与你的请求头中的编码匹配。如果数据编码与请求头中的编码不匹配,你需要确保数据的编码也是 UTF-8 或其兼容的编码。例如,如果你在响应体中使用 "application/json",但是请求头中的编码是 "application/x-www-form-urlencoded",你需要确保数据的编码也是 URLencoded 或 URLdecoded 的格式。

      请确保你的 Axios 请求正确定义了请求头和响应体的编码,并且你正在使用的是与请求和响应的编码兼容的库。如果你仍然遇到这个问题,你可能需要检查 Axios 的文档或相关库的 API 文档,以了解更详细的错误信息和解决方案。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部