让我说我有一个php页面...我希望该页面中的javascript访问一些用户信息变量(登录后),如用户ID,电子邮件等。如果我使用ajax,那么它将需要一个额外的半秒,因为页面必须加载,然后等待ajax去获取那些变量,所以我宁愿将其嵌入页面中,但就安全性而言,在源代码中嵌入电子邮件似乎有问题。
以下是我的选择你能想到更好的方法吗?
1 - 在第一次请求时将数据嵌入到php中
<html>
<script>
user_email='<?php echo $user_email; ?>';
</script>
2 - 数据加载与js / php文件分开,因此它不在原始页面源
<html>
<script src="userdata.js.php"></script>
--- userdata.js.php ---
user_email='<?php echo $user_email; ?>';
3 - 在页面加载后通过ajax请求数据(会更慢)
<html>
<script>
$(function(){
$.post('getuserdata.php',[],function(result){
userdata=result;
});
});
</script>
答案 0 :(得分:1)
您可能会考虑的另一个选项是在AJAX加载后使用JSONP异步调用函数。
<script type="text/javascript">
function handle_response(response)
{
// do whatever you want with the response
// you get a json object here that looks like
// { id: 1, username: 'jimmy' }
}
</script>
<script type="text/javascript src="/path/to/ajax/script.php"></script>
<?php
$arr = array('id' => 1, 'username' => 'jimmy');
$param = json_encode($arr);
header("Content-type: text/javascript");
echo "handle_response({$param})";
exit;
现在,一旦来自script.php的有效javascript完成加载,它会立即调用您定义的客户端函数。这可以使您的信息远离初始HTML源代码,您甚至可以将该脚本放在https后面,而不会对网站的其余部分执行此操作。
答案 1 :(得分:0)
我总是使用第一步
var myvar = <?php echo $myvar; ?>;
答案 2 :(得分:0)
现在人们已经习惯了ajax,并且说圈子说加载,并不是那么罕见。另一方面,如果你可以嵌入同样好的数据。制作单独的文件甚至更好。你应该注意你提供的信息类型,你可以使用SSL来提高它的安全性。
这三个都是可行的...取决于你试图保护数据的人。调用页面的用户可以通过这种或那种方式访问信息......所以请更加可靠地实现。
答案 3 :(得分:0)
出于安全原因,我不喜欢在页面中嵌入信息。在某个时间点,存储不应存在的东西太容易了。你有两个不错的选择出现在我的头顶:
在页面加载期间执行ajax调用(body onload = ajax调用)(更安全)
将它们存储在网站的Cookie中(不太安全)
我通常使用选项#1。
答案 4 :(得分:0)
对于在源代码中嵌入电子邮件的安全性,似乎有问题。
通过ajax检索电子邮件并将其直接嵌入源中遭受同样的安全问题:嗅探流量的人可以收到电子邮件。为避免这种情况,你需要
我想很多网站都在解决这个问题,并将电子邮件发送给未加密的客户端。