0

我正在尝试检查用户输入的 pop 和 smtp 值。我希望验证用户输入的 pop 和 smtp 例如(pop.gmail.com,smtp.gmail.com)是正确还是错误。

为此,我只通过用户输入的 pop 和 smtp 值向服务器发送一个请求,这将执行两项任务 1. 通过连接到该特定服务器来检查用户输入的 pop,2. 通过发送 1 封邮件来检查用户输入的 smtp一些虚拟邮件ID..我完成了所有这些任务..

但现在我的要求是,我必须在验证每件事后向用户展示。我的意思是在 ui 中我必须显示为

  1. POP连接检查..好的
  2. smtp 连接已检查.. 就这样。

但是我只向服务器发送了一个请求来完成这两项任务..所以我需要在完成每项任务后从服务器获取中间状态..所以只有我可以在客户端 UI 中更新..但我不知道这是否可能从服务器获取单个请求的中间响应...有什么想法的朋友吗?如果是这样,你能想出一点代码......

期待建议?

4

3 回答 3

0

你应该看看长轮询技术,它可以检索部分响应,但它不适用于所有浏览器。

于 2009-11-06T06:01:59.910 回答
0

您可以使用 HEAD 请求而不是仅返回 HTTP 标头的 GET 或 POST

于 2009-11-06T06:11:17.550 回答
0

稍微偏离主题 - 但发送虚拟邮件可能是“危险的”。

如果您尝试发送到不存在的本地地址,许多服务器会“注意”。例如 - 如果服务器的域是“whatever.com”并且您发送到一个随机地址,比如 aaa@whatever.com,并且“aaa”不是有效用户,那么服务器会注意到这一点。

然后,服务器可能会采取措施,例如在一段时间内阻止您作为发件人。(这有助于减少来自字典攻击的垃圾邮件。)因此,您的“测试”最终有效地阻止了真实邮件的传递。

反之亦然。假设您尝试发送到您知道有效的外部地址(例如您自己的电子邮件地址)作为测试。在这种情况下,发件人地址必须是有效的内部地址。如果您使用无效的内部地址,或者更糟糕的是不是内部地址,则服务器可能会拒绝发送邮件(最好的情况),最坏的情况是再次建立临时阻止。

这两种情况的关键因素是,尽管 SMTP 协议非常“松散”,但 SMTP 服务器非常密切地监视“不良行为”,因为这是区分垃圾邮件程序的一种方法。因此,任何“不正确”行为的隐藏都可能导致它任意拒绝接受您的邮件(通常是在有限的时间内)。

顺便说一句,回到你原来的问题。您的两个测试几乎都是即时的。即使电子邮件服务器位于世界的另一端,您也可以在几秒钟内完成两项检查。因此,即使您将 2 个数据包发回给用户,它们也会显示为“一起到达”。由于来自浏览器的 1 个请求只能处理来自服务器的 1 个响应,因此您需要以 2 个数据包的形式发送响应。

即做第一个测试 - 发送响应的第一部分 - 做第二个测试 - 发送响应的第二部分。

对于普通的 HTTP 数据包,这没什么大不了的。在第一个响应准备好之后执行某种刷新/发送,然后在第二个响应之后再次执行。浏览器用于在部分页面到达时显示它们。

但是,对于 AJAX 请求,您需要在相当低的级别进入您的框架。据我所知,大多数框架都要求传入的异步数据包在开始解析之前“完成”。如果数据包被格式化为 xml 格式尤其如此,其中部分解析在几乎所有情况下都是无用的。

于 2009-11-06T06:18:18.050 回答