当我们想通过ajax将一些数据发布到php页面时,任何人都可以看到URL以及发布的值。
这可能非常危险,有什么方法可以确保这一点吗?我可以隐藏URL或以任何方式对URL进行编码,使用户无法看到和访问它吗?
这是一个示例代码,正如您所看到的,URL can数据在源代码中公开,也在像Firebug这样的检查器中公开。
function reg_user(id){
$(document).ready(function() {
$.ajax({
type: "POST",
url: "reg_user.php",
data: "id="+id,
success: function(msg){
str=$.trim(msg)
if (str=='ok'){
}
}
})
})
};
感谢
没有办法。您导航的所有url都会被浏览器的开发工具栏或网络捕获工具(如wireshark)捕获。
Ajax是一种使javascript能够发送http请求的工具,但javascript不能加密http消息。当调用ajax函数时,意味着告诉浏览器现在发送http请求。
即使javascript能够加密http消息,您也需要在javascript代码中编写加密密钥。
我犯了一个错误,整个http消息都是用https加密的,包括头和请求体,但这个功能是由浏览器提供的。如果您在https网站中使用ajax,javascript会告诉浏览器发送https请求,并由浏览器负责加密发送的消息。
不,用户将始终能够通过开发工具或某些网络监控工具了解您正在进行的调用。您可以压缩和缩小JavaScript,但开发人员始终能够找到您的URL调用。
同意@JosephteDreamer的评论:客户端的每一件事都是可见的,只是保护你的服务器端。
类似的问题;
如何从浏览器页面源隐藏jquery ajax中的详细信息
祝好运
您应该保护您的服务器以及客户端和服务器应用程序之间的连接。
您可以使用HTTPS进行通信,使用POST在标头中传递的数据将自动使用HTTPS进行加密。
为了隐藏您的API URL,您可以考虑使用代理服务器,这样您的客户端应用程序将调用代理服务器,而代理服务器则是您真正的API。这样,在检查来自客户端的请求时,只有指向代理服务器的URL可见。