我们的网络身份验证平台在几天前遇到意外行为,当时用户无法连接到我们的身份验证服务器,这实际上是一种在https://xxxxxxxx.com/authentication/authorize.php
将POST数据发送到我们的网址的方法。我们不确定问题是什么 - 我们的服务器?他们使用的客户?他们的防火墙?
这是我们通过以下实验使用的方法:
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.CookieContainer = new CookieContainer();
webRequest.AllowAutoRedirect = false; // false so we don't get redirected
using (HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse())
{
headers.Add("Status Code: " + (int)webResponse.StatusCode);
headers.Add("Status Desc: " + webResponse.StatusDescription);
foreach (string key in webResponse.Headers.Keys)
{
if (!key.ToString().Equals("Location"))
{
var value = webResponse.Headers[key];
headers.Add(key + ": " + value);
}
}
}
我们让他发送标题报告:
看来我们是来自此用户的4XX
层状态代码错误。
通过Google搜索,我们发现此article指示您更改.htacess
文件。具体来说,这是your website host may be implementing filtering which creates a mod_security error.
我们将此代码段放入.htacess
:
<IfModule mod_security.c>
SecFilterEngine Off
SecFilterScanPOST Off
</IfModule>
我们要求用户再次运行我们的头文件脚本,并返回:
https://
网址仍然返回<403> Forbidden
错误,但http://
域(未加密的)最终给了我们一个声音。请注意,所需的状态代码为302 Found
,因为尝试导航到该URL的任何人都应重定向到我们的主机域。在这个问题上,我们得到了302 Moved Temporarily
。
从我们的实验中看,改变.htaccess
确实让我们取得了一些进展,但不使用https://
协议是一个问题。我们联系了我们的服务器主机,询问为什么会发生这种情况(例如 - 你们实施过滤吗?),我们正在等待回复。
我的问题是 - 发生了什么事?你以前遇到过这个问题吗?
答案 0 :(得分:2)
您收到的消息“需要代理身份验证”看起来像用户正在通过代理服务器访问网络。要检查的第一件事是浏览器或应用程序用户用于访问您的站点正确连接并验证他的代理服务器。接下来要检查的是他们的代理管理员是否以某种方式阻止了对您网址的访问(不太可能)。也许您可以更新您的测试人员应用程序以打印响应的服务器的IP地址,这可能是代理服务器的地址,而不是您的服务器。