【发布时间】:2013-09-18 09:22:08
【问题描述】:
我在同一个服务器和同一个域(site1.domain.com、site2.domain.com...)上有几个站点,它们通过 http post 请求相互通信。这很好用,但我也有一个所有网站的开发版本,它在基本身份验证下,所以你需要一个用户名/密码才能看到这些网站,而在这些网站上,http post 请求不起作用。
这似乎是因为服务器无法对自己进行身份验证,这对我来说有点奇怪,我对 IIS 没有太多经验,所以你可能错过了一些东西。
有人知道如何解决这个问题吗? 不知道有没有影响,但是网站使用的是php,而不是asp.net
【问题讨论】:
-
显示一些代码?你是如何提出要求的?您如何尝试和验证?
-
这是 Drupal7 站点,所以我使用 drupal_http_request() 函数。 site2.domain.com 只是向 site1.domain.com/xxx 发出请求,其中运行一个脚本来执行一些数据库查询,然后返回结果。所有开发站点(不起作用的地方)都使用 IIS 中的基本身份验证选项。
-
因此您需要在请求中发送身份验证凭据,而不是 drupal 用户,但这可能会有所帮助:drupal.org/node/715990
-
可能有点不清楚,但问题不是drupal 身份验证,而是IIS 服务器身份验证。要访问网站,您必须使用在服务器上创建的用户登录,即 IIS 身份验证。所以问题是,当我向 site1.domain.com/xxx 发出请求时,服务器无法访问该 url,因为它没有针对服务器进行身份验证。
-
是的,我明白了,所以您需要在 http 请求中发送凭据。在 c# .net 你会做 request.Credentials = new NetworkCredential(user,password);您需要在所有请求中做类似的事情,如果这不适用于 drupal_http_request 方法,您可以通过 base64 编码您的凭据自己创建授权标头