【问题标题】:System.setProperty("sun.net.http.allowRestrictedHeaders", "true") is not working in jenkinsSystem.setProperty("sun.net.http.allowRestrictedHeaders", "true") 在詹金斯中不起作用
【发布时间】:2015-11-15 05:02:05
【问题描述】:

我正在尝试在 http 请求标头中发送原始标头,但是当我获取它的值时,我得到的是 null 而不是我在原始标头中设置的 url。

我还启用了受限标头作为 jenkins 作业中请求标头的一部分发送,方法是使用以下

System.setProperty("sun.net.http.allowRestrictedHeaders", "true")

但是这个命令好像不行。

【问题讨论】:

    标签: jenkins header request system


    【解决方案1】:

    我正在补充 Cady 和 Hank 的答案:

    如果您使用sun.net.www.protocol.http.HttpURLConnection 执行请求(我通过使用spring boot TestRestTemplate 执行),系统属性只会静态读取一次。

    这意味着,在执行请求之前设置属性权限可能不会影响 HttpURLConnection,尽管它会更改系统属性值。

    所以请务必尽早设置(例如通过 Maven)

    【讨论】:

      【解决方案2】:

      无法在 Jenkins 工作中工作的根本原因可能是您的 Jenkins 实例正在使用 OpenJDK 构建项目。

      在下面来自 OpenJDK 7 的源代码中,它显示它使用静态块来设置 allowedRestrictedHeaders 系统属性,并且在 HttpURLConnection 初始化后不会被重置。

      除了pom.xml 解决方案之外,如果您在 JVM arg 之下设置它也可以工作。

      "-Dsun.net.http.allowRestrictedHeaders=true"

      static {
          maxRedirects = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetIntegerAction(
                          "http.maxRedirects", defaultmaxRedirects)).intValue();
          version = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetPropertyAction("java.version"));
          String agent = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetPropertyAction("http.agent"));
          if (agent == null) {
              agent = "Java/" + version;
          } else {
              agent = agent + " Java/" + version;
          }
          userAgent = agent;
          validateProxy = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetBooleanAction(
                          "http.auth.digest.validateProxy")).booleanValue();
          validateServer = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetBooleanAction(
                          "http.auth.digest.validateServer")).booleanValue();
      
          enableESBuffer = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetBooleanAction(
                          "sun.net.http.errorstream.enableBuffering")).booleanValue();
          timeout4ESBuffer = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetIntegerAction(
                          "sun.net.http.errorstream.timeout", 300)).intValue();
          if (timeout4ESBuffer <= 0) {
              timeout4ESBuffer = 300; // use the default
          }
      
          bufSize4ES = java.security.AccessController.doPrivileged(
                  new sun.security.action.GetIntegerAction(
                          "sun.net.http.errorstream.bufferSize", 4096)).intValue();
          if (bufSize4ES <= 0) {
              bufSize4ES = 4096; // use the default
          }
      
          allowRestrictedHeaders = ((Boolean) java.security.AccessController.doPrivileged(
                  new sun.security.action.GetBooleanAction(
                          "sun.net.http.allowRestrictedHeaders"))).booleanValue();
          if (!allowRestrictedHeaders) {
              restrictedHeaderSet = new HashSet<String>(restrictedHeaders.length);
              for (int i = 0; i < restrictedHeaders.length; i++) {
                  restrictedHeaderSet.add(restrictedHeaders[i].toLowerCase());
              }
          } else {
              restrictedHeaderSet = null;
          }
      }
      

      【讨论】:

        【解决方案3】:

        我遇到了同样的问题,对我有用的是在pom.xml 的surefire-plugin 配置中设置系统参数:

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <version>2.17</version>
                    <configuration>
                        <systemPropertyVariables>
                            <sun.net.http.allowRestrictedHeaders>true</sun.net.http.allowRestrictedHeaders>
                        </systemPropertyVariables>
                    </configuration>
                </plugin>
            </plugins>
        </build>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-05-03
          • 2021-10-19
          • 1970-01-01
          • 1970-01-01
          • 2018-12-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多