我正在尝试检查用户输入的pop和smtp值。我希望验证pop和smtp说例如(pop.gmail.com,smtp.gmail.com)用户输入的是正确还是错误
为此,我只通过获取用户输入的pop和smtp值向服务器发送一个请求,这将执行两项任务 1.检查用户是否通过连接到该特定服务器进入pop, 2.通过向一些虚拟邮件ID发送1封邮件来检查用户输入的smtp。 我完成了所有这些任务..
但是现在我的要求是,我必须在验证每件东西之后向用户显示..我的意思是在ui中我必须显示为
但是我只向服务器发送了一个请求来完成这两项任务。所以我需要在完成每项任务后从服务器获得中间状态。所以我只能在客户端UI更新..但我不知道是否有可能从服务器获得单个请求的中间响应...任何想法的朋友?如果是这样,你能想出一些代码......
期待这些建议?
答案 0 :(得分:0)
你应该查看长polling technique,可以检索部分响应,但它不适用于所有浏览器。
答案 1 :(得分:0)
您可以使用HEAD请求而不是仅返回HTTP标头的GET或POST
答案 2 :(得分:0)
稍微偏离主题 - 但发送虚拟邮件可能是“危险的”。
如果您尝试发送到不存在的本地地址,许多服务器会“注意”。例如 - 如果服务器的域是“whatever.com”并且您发送到随机地址,例如aaa@whatever.com,并且“aaa”不是有效用户,则服务器会注意到这一点。
服务器可能然后采取阻止您作为发件人一段时间的操作。 (这有助于减少字典攻击中的垃圾邮件。)因此,您的“测试”最终会有效阻止真实邮件的传递。
反过来也是如此。假设您尝试发送到外部地址,您知道该地址是有效的(例如您自己的电子邮件地址)作为测试。在这种情况下,来自地址的必须是有效的内部地址。如果您使用无效的内部地址,或者更糟糕的地址不是内部地址,服务器可能会拒绝发送邮件(充其量),最糟糕的情况是再次建立临时阻止。
这两种情况的关键因素是虽然SMTP协议非常“松散”,但SMTP服务器会非常密切地关注“不良行为”,因为这是区分垃圾邮件程序的一种方法。所以任何隐藏“不正确”的行为都会导致它随意拒绝接受您的邮件(通常是在一段有限的时间内。)
顺便提一下,回到原来的问题。 你的两个测试都是瞬间完成的。即使电子邮件服务器位于世界的另一端,您也可以在几秒钟内完成两项检查。因此,即使您将2个数据包发回给用户,他们也可能会出现“一起到达”。由于来自浏览器的1个请求只能处理来自服务器的1个响应,因此您需要以2个数据包发送响应。
即做第一次测试 - 发送第一部分响应 - 做第二次测试 - 发送第二部分响应。
对于普通的HTTP数据包,这没什么大不了的。在第一个响应准备就绪后进行某种刷新/发送,然后在第二个响应之后再次进行。浏览器用于在到达时显示部分页面。
但是对于AJAX请求,您需要在相当低的级别进入框架。我所知道的大多数框架都要求传入的Async数据包在开始解析之前是“完整的”。如果数据包的格式为xml,则几乎所有情况下部分解析都无用。