标签: http-status-code-407

远程服务器返回错误:(407)需要代理身份验证

我在调用Web服务时遇到此错误:

"远程服务器返回错误:(407)需要代理验证".

我得到了一般的想法,我可以通过添加来获得代码

myProxy.Credentials = NetworkCredential("user", "password", "domain");
Run Code Online (Sandbox Code Playgroud)

或者在代码中使用DefaultCredentials.我的问题是,没有这个,对Web服务的调用在生产中工作.

似乎有一个涉及Machine.config的非代码解决方案,但它是什么?目前我无法访问生产盒的machine.config文件,看看它是什么样的.我尝试更新我的machine.config如下,但我仍然得到407错误.

<system.net>
    <defaultProxy enabled="true" useDefaultCredentials="true">
        <bypasslist>
            <clear />
        </bypasslist>
        <proxy proxyaddress="myproxy:9000"
               usesystemdefault="false"
               bypassonlocal="true"
               autoDetect="False" />
    </defaultProxy>
</system.net>
Run Code Online (Sandbox Code Playgroud)

.net c# proxy-authentication machine.config http-status-code-407

70
推荐指数
4
解决办法
17万
查看次数

C#中的代理基本身份验证:HTTP 407错误

我正在使用需要身份验证的代理,即在浏览器中如果我尝试打开页面,它会立即请求凭据.我在我的程序中提供了相同的凭据,但它因HTTP 407错误而失败.

这是我的代码:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URL);

IWebProxy proxy = WebRequest.GetSystemWebProxy();
CredentialCache cc = new CredentialCache();
NetworkCredential nc = new NetworkCredential();

nc.UserName = "userName";
nc.Password = "password";
nc.Domain = "mydomain";
cc.Add("http://20.154.23.100", 8888, "Basic", nc);
proxy.Credentials = cc;
//proxy.Credentials = System.Net.CredentialCache.DefaultCredentials;
request.Proxy = proxy;
request.Proxy.Credentials = cc;
request.Credentials = cc;
request.PreAuthenticate = true;
Run Code Online (Sandbox Code Playgroud)

我尝试了所有可能的事情,但似乎我错过了一些东西.是这样的,我必须提出两个要求吗?首先没有凭据,一旦我从服务器收到有关凭据需求的回复,请使用凭据进行相同的请求?

c# proxy httpwebrequest basic-authentication http-status-code-407

40
推荐指数
3
解决办法
12万
查看次数

配置Fiddler使用公司网络的代理?

我正试图让Fiddler与我公司的代理合作.每个外部请求都返回407.

到目前为止,我已经尝试添加oSession.oRequest ["Proxy-Authorization"] ="YOURCREDENTIALS"; 到我在base64中使用USERNAME:PASSWORD的自定义规则.仍然没有运气.

有任何想法吗?谢谢.

authentication proxy authorization fiddler http-status-code-407

31
推荐指数
2
解决办法
5万
查看次数

WCF客户端 - 运行Web服务时需要407代理身份验证

我已经创建了使用免费webservice的简单WinForms应用程序 http://www.webservicemart.com/uszip.asmx.但是这个应用程序无法使用错误的服务操作:

远程服务器返回意外响应:(407)需要代理身份验证(ISA Server需要授权才能完成请求.拒绝访问Web代理服务)

创建代理和触发服务操作的代码:

ChannelFactory<ServiceReference1.USZipSoap> proxy = new ChannelFactory<ServiceReference1.USZipSoap>("USZipSoap");
ServiceReference1.USZipSoap client = proxy.CreateChannel();
string str = client.ValidateZip("12345");
MessageBox.Show(str);
Run Code Online (Sandbox Code Playgroud)

这是我公司网络的问题,还是webservicemart.com的代理?

我已经搜索了很多关于更改配置文件,创建自定义绑定等的信息.但我觉得缺乏更基本的理解...
如果这个错误是关于我们公司网络的ISA服务器那么我应该做什么配置ISA Server不限制我使用外部Web服务?

wcf proxy web-services isaserver http-status-code-407

15
推荐指数
1
解决办法
4万
查看次数

407需要验证 - 未发送任何挑战

更新:
如果你刚刚得到这个问题,一般的要点是我正在尝试通过代理进行HttpWebRequest,我从我们奇怪的代理服务器获得407.IE,Firefox,Chrome都能成功地协商代理,Adobe Air应用程序也是如此.Google Chrome网络安装程序实际上失败并且我们必须使用脱机安装程序可能很重要.

感谢Ian的链接,我已经让它进入​​下一阶段.它现在将令牌发送回代理,但是第3阶段没有通过,因此具有用户名/密码哈希的请求不是由.NET发送的,因此不返回HTML.

我在用:

  • IE6用户代理
  • Windows 7的
  • 扫描安全代理
  • .NET 3.5

这是最新的代码,相当于下面的日志:

HttpWebRequest request = HttpWebRequest.Create("http://www.yahoo.com") as HttpWebRequest;
IWebProxy proxy = request.Proxy;
// Print the Proxy Url to the console.
if (proxy != null)
{
    // Use the default credentials of the logged on user.
    proxy.Credentials = CredentialCache.DefaultCredentials;
}
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
request.Accept = "*/*";

HttpWebResponse response = request.GetResponse() as HttpWebResponse;
Stream stream = response.GetResponseStream();
Run Code Online (Sandbox Code Playgroud)

例外

WebException(407)需要身份验证.

正在使用的代理

代理客户端是我们服务器机房中的一个Scansafe …

c# proxy httpwebrequest http-status-code-407

8
推荐指数
2
解决办法
3万
查看次数

远程服务器返回错误:(407)需要代理验证

我在.NET 3.5中使用此代码并收到错误"远程服务器返回错误:(407)需要代理验证."

using (WebClient client = new WebClient())
{
    WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;

    try
    {
        string webPageStr = client.DownloadString(URL);
        Console.WriteLine("OK");
    }
    catch (Exception ex)
    {
        Console.WriteLine("FAIL");
        Console.WriteLine(ex.Message);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,此代码可以在.NET 4.0中顺利运行,因为此行足以传递代理身份验证,而不适用于.NET 3.5.

WebRequest.DefaultWebProxy.Credentials = CredentialCache.DefaultCredentials;
Run Code Online (Sandbox Code Playgroud)

因此,我尝试了许多其他方法来解决这个问题,但没有一个工作:

1)用.替换CredentialCache.DefaultCredentials行

WebRequest.DefaultWebProxy.Credentials = new NetworkCredential(user, password, domain);
Run Code Online (Sandbox Code Playgroud)

2)创建新的代理对象

IWebProxy proxy = new WebProxy(proxyUrl, port);
proxy.Credentials = new NetworkCredential(user, pass, domain);
client.Proxy = proxy;
client.Credentials = new NetworkCredential(user, pass, domain);
Run Code Online (Sandbox Code Playgroud)

3)添加此行

client.UseDefaultCredentials = true;
Run Code Online (Sandbox Code Playgroud)

4)使用HttpWebRequest而不是WebClient并重复上面的每个过程.这是示例代码.

HttpWebRequest webRequest = WebRequest.Create(URL) as HttpWebRequest;
webRequest.Proxy = WebRequest.DefaultWebProxy;
webRequest.Credentials = …
Run Code Online (Sandbox Code Playgroud)

c# .net-3.5 proxy-authentication http-status-code-407

6
推荐指数
1
解决办法
2万
查看次数

访问Amazon S3时需要HTTP 407代理验证

我已经尝试了一切,但我似乎无法解决这个问题,只有一个客户端在公司代理/防火墙后面发生.我们的Silverlight应用程序连接到Amazon S3以下载/上载某些文档.在一个客户端和一个客户端上只返回407错误,之后应用程序无法保存任何内容.

Inner Exception:
 System.ServiceModel.ProtocolException: [UnexpectedHttpResponseCode]
Arguments: 407,Proxy Authentication Required
Run Code Online (Sandbox Code Playgroud)

我们在不同的客户端有类似的东西,但有更多的CORS问题.为了解决这个问题,我使用cloud-front伪造了一个子域,然后访问S3存储桶并解决了这个问题.我希望它能解决它与这个客户端,但它没有.

我已经尝试将此代码添加到web.config中,如许多答案所示

 <system.net>
      <defaultProxy useDefaultCredentials="true" >
      </defaultProxy>
   </system.net>
Run Code Online (Sandbox Code Playgroud)

我已经阅读了有关使用用户名和密码通过基础身份验证传递代理标头的文章,但我不确定这对我们有何帮助.客户端使用代理服务器,它需要的任何身份验证都在我们的域之外.

**Additional Information**
Run Code Online (Sandbox Code Playgroud)

Silverlight代码引用了2个服务.一个是我们的wcf服务,它检索应用程序的所有数据.一个是使用亚马逊Soap api的Amazon S3服务,其端点位于http://s3.amazonaws.com/doc/2006-03-01/AmazonS3.wsdl

如果我进入我们的应用程序并且仅使用不对Amazon S3 api进行任何调用的系统的一部分,该应用程序工作正常.一旦我转到调用S3的系统的一部分,问题就开始了.有趣的是,对S3的调用很顺利,我可以检索文档,但是对我们的wcf服务的任何调用都返回407.

有任何想法吗?

**Update 2**
Run Code Online (Sandbox Code Playgroud)

根据Elliot Nelson的评论,我检查了我们用于在我们的应用程序中发出http请求的堆栈.原来我们默认使用http和https请求的客户端http.这是我们在App.xaml构造函数中的代码

  public App()
        {
            Startup += Application_Startup;
            UnhandledException += Application_UnhandledException;

            InitializeComponent();

            WebRequest.RegisterPrefix("http://", WebRequestCreator.ClientHttp);
            WebRequest.RegisterPrefix("https://", WebRequestCreator.ClientHttp);

        }
Run Code Online (Sandbox Code Playgroud)

现在,了解clienthttp和browserhttp之间的区别以及何时使用它们.此外,切换到browserhttp的潜在影响/问题.

**Update 3**
Run Code Online (Sandbox Code Playgroud)

有没有办法请求浏览器以受信任模式运行浏览器内的Silverlight应用程序,它是否有助于绕过此问题?

http amazon-s3 amazon-web-services http-status-code-407 silverlight-5.0

6
推荐指数
1
解决办法
1108
查看次数

如何通过具有凭据的代理服务器运行Azure PowerShell cmdlet?

当我运行以下Powershell cmdlet时(来自Azure管理工具Snapin):

get-osversions -subscriptionId **** -certificate (get-item cert:\CurrentUser\MY\******)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误消息:

Get-OSVersions:远程服务器返回意外响应:(407)代理身份验证必需.在行:1 char:15 + get-osversions <<<< -subscriptionId *-certificate(get-item cert:\ CurrentUser\MY*****)+ CategoryInfo:CloseError:(:) [Get-OSVersions],ProtocolException + FullyQualifiedErrorId:Microsoft.Samples.AzureManagementTools.PowerShell.HostedS ervices.GetOSVersionsCommand

Get-OSVersions:对象引用未设置为对象的实例.在行:1 char:15 + get-osversions <<<< -subscriptionId * -certificate (get-item cert:\ CurrentUser\MY***)+ CategoryInfo:CloseError:(:) [Get-OSVersions],NullReferenceException + FullyQualifiedErrorId:Microsoft.Samples.AzureManagementTools.PowerShell.HostedS ervices.GetOSVersionsCommand

似乎这里的互联网代理服务器拒绝脚本所需的访问权限.

我在互联网上看了很多,似乎没有简单的解决方法,因为这个cmdlet没有有效的"-credentials"或代理服务器参数.

我知道有一个'Get-Credential'cmdlet,但我觉得它没有用.您如何将凭证传递给Azure cmdlet?

任何人都可以想到解决这个问题的方法吗?

...除了使用不同的非代理互联网连接?

我很难过.

非常感谢您的时间.

powershell credentials azure proxy-server http-status-code-407

6
推荐指数
2
解决办法
8778
查看次数

HttpClient 4.2.2和代理用户名/密码

我有HttpClient 4.2.2的问题和使用用户名/密码的代理.HttpClient以这种方式工作:

  1. 项目清单
  2. 发送没有代理服务器的请求(但是我为每个请求设置了代理参数)
  3. 得到squid的回复,407错误
  4. 使用代理服务器发送请求

这是非常奇怪的行为,是否可以为每个请求添加有关代理的信息?我试图为每个请求添加硬编码的"代理授权"标头,它工作正常,为什么HttpClient不能这样做?

Java代码

DefaultHttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(PROTOCOL_VERSION, HTTP_1_1);
...
String proxyServer = getProxyServer();
int proxyPort = getProxyPort();
List<String> authpref = new ArrayList<String>();
authpref.add(AuthPolicy.BASIC);
httpClient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF, authpref);
String proxyUser = getProxyUser();
String proxyPassword = getProxyPassword();
CredentialsProvider credsProvider = httpClient.getCredentialsProvider();
credsProvider.setCredentials(new AuthScope(proxyServer, proxyPort), new UsernamePasswordCredentials(proxyUser, proxyPassword));
httpClient.setCredentialsProvider(credsProvider);
HttpHost proxy = new HttpHost(proxyServer, proxyPort, (proxyServer.indexOf("https") != 0) ? "http" : "https");
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
...
HttpPut put = new HttpPut(url);

/*** hardcoded header ***/
//put.addHeader("Proxy-Authorization", "Basic eHRlbmR4LmRuZXByOnF3ZXJ0eQ==");
/*** …
Run Code Online (Sandbox Code Playgroud)

java proxy squid httpclient http-status-code-407

4
推荐指数
1
解决办法
2万
查看次数