我在Linux服务器上使用共享的网络托管帐户。我的服务器端PHP脚本可以使用Windows sockets从我的Windows(客户端)应用程序调用。如果没有显示太多代码(通过HTTP协议到端口80的基本连接),客户端应用程序可能会将以下标头发送到PHP脚本:
POST
/php/checkupdates.php?ver=1.2.3.4&ref=&nam=some%20name
HTTP/1.0\r\n
Accept: text/plain, text/html, */*\r\n
Accept-Language: en-us\r\n
Accept-Encoding: deflate\r\n
User-Agent: My own agent\r\n
Host:
mydomain.com
\r\n
\r\n
但由于某种原因,此脚本会返回403 Forbidden
错误。有趣的是,如果我在Web浏览器中加载相同的URL,PHP脚本就可以运行了。
纯粹通过试错过程我发现如果我在标题中添加以下行,我的PHP脚本就可以正常工作了:
Content-Length: 0\r\n
嗯,这一切都很好。但问题是,要添加此行,我需要更新我的用户已下载并已使用一段时间的所有客户端(Windows)应用程序。换句话说,这并不容易。
所以我希望尝试从服务器(即PHP)方面解决这个问题。有什么想法吗?
PS。我还应该指出,当我与之前的网络托管公司(即没有Content-Length
行)托管时,这曾经起作用。)
PS2。我尝试联系我当前的网络托管服务提供商,但他们的技术支持不断要求我的公共IP。 (可能将我列入白名单,所以我没有看到这个错误,这对其他人来说也不会解决。)换句话说,我不确定他们知道他们在做什么。所以在我再次与他们联系之前,我想先了解它。