You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Karate至1.2.0后获取Okta Token出现Netty相关异常

问题描述

将Karate从1.1.0版本升级至1.2.0后,执行OAuth2客户端凭证获取令牌的测试时,尽管请求成功返回200状态码,但在处理响应阶段触发以下错误:

'io.netty.handler.codec.http.cookie.CookieHeaderNames$SameSite io.netty.handler.codec.http.cookie.DefaultCookie.sameSite()'

对应的测试代码如下:

Feature: Get Bearer Token from Okta

Scenario: Get access token for OAuth2 client credentials
    Given url karate.properties['okta.server.url']
    * form field grant_type = 'client_credentials'
    * form field scope = scope
    * header Authorization = call read('classpath:com/moo/g/karate/basic-auth.js') { username : '#(clientId)', password : '#(secret)' }
    When method post
    Then status 200
    * def authToken = response.access_token

调试日志显示请求已成功完成,但在解析响应中的Set-Cookie头部时触发错误:

14:41:02.617 [main] DEBUG com.intuit.karate - response time in milliseconds: 758
1 < 200
1 < Date: Tue, 23 Aug 2022 19:41:02 GMT
1 < Server: nginx
1 < Content-Type: application/json
1 < x-okta-request-id: YwUtTpqpDjtZ6CYqc2sA8gAABvQ
1 < x-xss-protection: 0
1 < p3p: CP="HONK"
1 < content-security-policy: frame-ancestors 'self'
1 < x-rate-limit-limit: 2000
1 < x-rate-limit-remaining: 1994
1 < x-rate-limit-reset: 1661283689
1 < cache-control: no-cache, no-store
1 < pragma: no-cache
1 < expires: 0
1 < expect-ct: report-uri="https://oktaexpectct.report-uri.com/r/t/ct/reportOnly", max-age=0
1 < x-content-type-options: nosniff
1 < Strict-Transport-Security: max-age=315360000; includeSubDomains
1 < X-Robots-Tag: noindex,nofollow
1 < Keep-Alive: timeout=5, max=100
1 < Connection: Keep-Alive
1 < Transfer-Encoding: chunked
1 < Set-Cookie: JSESSIONID=26F3D925C7E7E003B5430ED9AFCEFCAA; Domain=login-preview.moo.com; Secure
{"token_type":"Bearer","expires_in":3600,"access_token":"eyJraWQiOiJjTl95TE9VWHYtdzA3REQ5OXZIQXNkWDlocnZQWG0wUmJQQnpLNElJbzB3IiwiYWxnIjoiUlMyNTYifQ.eyJ2ZXIiOjEsImp0aSI6IkFULjN5RG5WNnB5X0hTVWR1T2tiY01WZFNaNzNyRDJIWm1RalJKMUdQWWJHTVkiLCJpc3MiOiJodHRwczovL2xvZ2luLXByZXZpZXcubXV0dWFsb2ZvbWFoYS5jb20vb2F1dGgyL2F1c3B4M3c1aXdHZ0huTG9QMWQ2IiwiYXVkIjoiYXBpOi8vZGVmYXVsdCIsImlhdCI6MTY2MTI4MzY2MiwiZXhwIjoxNjYxMjg3MjYyLCJjaWQiOiIwb2EydHlmd3RlaWVRejBMQTFkNyIsInNjcCI6WyJkZWxldGUtZG9jdW1lbnQiLCJzcGVjaWFsLXJpc2stZG9jcyIsImFkZC1kb2N1bWVudCIsImdldC1kb2N1bWVudCIsInJwZC1kb2NzIiwiZ2V0LW1ldGFkYXRhIl0sInN1YiI6IjBvYTJ0eWZ3dGVpZVF6MExBMWQ3In0.JMMatbIe5N5wV0R2SKV8X_ifv_naRw16fbBEN0-WSvptim1xGcrtp7zNOurPJLLIGQlIJvRvpznBAinJqqSIOfAwe718BTfF4Ec98LlzYYXsn9HubJKedSAuM9KM51vjohkljYD9duZF2s4rtd3BZPkKE4WIZurtNb-1-F0a5LyjWdasBH7IIwK5oflDMb-Dxv7HIZck5FQkikWqQZwLTuKHOuKys1gUm3IDgQj6FSnJ6P-HfrOp1ahD4cb2RQJqKS4jQeY8Dv_Ne3sONiBbt8dqWnZGSCpwAOANwOaVUGzalOrk5At65I5ENQKL3PH4h3PdOOl21utME2LugUG8BA","scope":"delete-document special-risk-docs add-document get-document rpd-docs get-metadata"}

14:41:02.619 [main] ERROR com.intuit.karate - classpath:com/moo/g/karate/get-authorization-okta-token.feature:8
When method post
'io.netty.handler.codec.http.cookie.CookieHeaderNames$SameSite io.netty.handler.codec.http.cookie.DefaultCookie.sameSite()'

解决方案

这个错误的核心原因是Netty依赖版本冲突:Karate 1.2.0升级了内置的Netty版本,引入了DefaultCookie.sameSite()方法,但项目中可能存在旧版本的Netty jar包,导致运行时找不到该方法。

具体修复步骤

  • 强制统一Netty版本:在项目构建文件中明确指定与Karate 1.2.0兼容的Netty版本(Karate 1.2.0使用的Netty版本为4.1.79.Final),覆盖所有依赖中的旧版本:
    • Maven(pom.xml)示例:
      <dependencyManagement>
          <dependencies>
              <dependency>
                  <groupId>io.netty</groupId>
                  <artifactId>netty-all</artifactId>
                  <version>4.1.79.Final</version>
              </dependency>
          </dependencies>
      </dependencyManagement>
      
    • Gradle(build.gradle)示例:
      configurations.all {
          resolutionStrategy.force 'io.netty:netty-all:4.1.79.Final'
      }
      
  • 清理重构项目:执行构建工具的清理命令,确保旧依赖被完全替换:
    • Maven:mvn clean install
    • Gradle:gradle clean build
  • 临时禁用Cookie处理:如果暂时无法解决依赖冲突,可以在测试中禁用Cookie自动处理,避免触发错误。在测试的Background或配置文件中添加:
    * configure cookies = null
    

验证

完成上述步骤后,重新运行测试,确认请求返回200状态码且不再触发该错误,能够正常提取authToken。

内容的提问来源于stack exchange,提问作者TMac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 17:06:29