无法通过代理隧道。代理通过https返回“ HTTP / 1.1 407”

我面临着Java6 /

8的奇怪行为。我尝试通过需要基本用户身份验证的代理进行隧道传输。通过标准的Java身份验证器执行此操作。如果我尝试访问https网址作为第一个网址,则会引发异常:

java.io.IOException:无法通过代理隧道。代理返回“需要HTTP / 1.1 407代理身份验证”

但是,如果我先访问http URL,然后再访问https URL,则https访问正常。

鉴于该代码:

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.net.Authenticator;

import java.net.HttpURLConnection;

import java.net.InetSocketAddress;

import java.net.PasswordAuthentication;

import java.net.Proxy;

import java.net.URL;

public class ProxyPass {

public ProxyPass( String proxyHost, int proxyPort, final String userid, final String password, String url ) {

try {

/* Create a HttpURLConnection Object and set the properties */

URL u = new URL( url );

Proxy proxy = new Proxy( Proxy.Type.HTTP, new InetSocketAddress( proxyHost, proxyPort ) );

HttpURLConnection uc = (HttpURLConnection) u.openConnection( proxy );

Authenticator.setDefault( new Authenticator() {

@Override

protected PasswordAuthentication getPasswordAuthentication() {

if (getRequestorType().equals( RequestorType.PROXY )) {

return new PasswordAuthentication( userid, password.toCharArray() );

}

return super.getPasswordAuthentication();

}

} );

uc.connect();

/* Print the content of the url to the console. */

showContent( uc );

}

catch (IOException e) {

e.printStackTrace();

}

}

private void showContent( HttpURLConnection uc ) throws IOException {

InputStream i = uc.getInputStream();

char c;

InputStreamReader isr = new InputStreamReader( i );

BufferedReader br = new BufferedReader( isr );

String line;

while ((line = br.readLine()) != null) {

System.out.println( line );

}

}

public static void main( String[] args ) {

String proxyhost = "proxyHost";

int proxyport = proxyPort;

final String proxylogin = proxyUser;

final String proxypass = proxyPass;

String url = "http://www.google.de";

String surl = "https://www.google.de";

// new ProxyPass( proxyhost, proxyport, proxylogin, proxypass, url ); // uncomment this line to see that the https request works!

// System.out.println( url + " ...ok" ); // uncomment this line to see that the https request works!

new ProxyPass( proxyhost, proxyport, proxylogin, proxypass, surl );

System.out.println( surl + " ...ok" );

}

有什么建议,想法吗?

回答:

您必须将变量 和

编辑 为空白:

jdk.http.auth.tunneling.disabledSchemes=

jdk.http.auth.proxying.disabledSchemes=

就我而言,我在此文件中找到了

jdk1.8.0_111 / jre / lib / net.properties

以上是 无法通过代理隧道。代理通过https返回“ HTTP / 1.1 407” 的全部内容, 来源链接: utcz.com/qa/402589.html

回到顶部