在调试一个接口,php的,文件名是index.php,放在目录/checkmail/下。
访问时的url写的是/checkmail,调用时用的是JQuery的post方法。
开始发现,被调用时检查传入的参数没有传过来。
跟踪了传过来的所有参数,发现$_SERVER[‘REQUEST_METHOD‘]得到是GET。
明明是POST调用的,为什么得到的是GET呢?
先百度了一下,没找到答案。
于是各种尝试,最后在调用的url中,把反斜杠/加上,发现参数得到了。
也就是说,/checkmail 和 /checkmail/,是不一样的。
继续百度,发现加不加斜杠的讨论,在SEO中更多。
当Web服务器接收到对某个末尾不含斜杠的url请求时,例如“http://www.abc.com/checkmail”,这时服务器会搜索网站根目录下有没有名为“checkmail”的文件,如果没有就把checkmail当做目录处理,然后返回checkmail目录下的默认首页。当Web服务器接收到的是末尾带斜杠的请求时就会直接当做目录处理。
简单来说就是,当浏览器解析 /checkmail 这样的url时,服务器会执行301转向到/checkmail/,两个链接都有效,但是第二种更快。当然这个转向的时间一般是感觉不到的,几乎可以忽略。对于搜索引擎,这两个地址是有可能同时收录的。
也就是说,以/checkmail/访问时,因为没有checkmail这个文件,所以被转向到/checkmail/目录了,而/checkmail/的首页,也就是index.php被调用。
因为被转向了,所以,POST过来的数据,可能因为服务器配置的原因,没有以POST的方式转向到/checkmail/。
这应该是问题所在了,至于是不是服务器配置还是怎么配,没有再继续看。
比较明确的是,POST调用/checkmail/和/checkmail,如果有差异,还是统一成唯一的URL比较好。