Dex*_*xty 8 javascript ajax codeigniter token
我做了一个简单的自动加载功能,当你在网站上向下滚动时加载内容.但是,当我在Codeigniter中启用CSRF保护时,似乎存在一些问题.
我没有使用表单,所以我不知道当你滚动时我正在做我的帖子请求时如何将令牌从A发送到B.
我的JavaScript
if (location.href == baseurl) {
$(window).scroll(function(){
if ($(window).scrollTop() > $('body').height() / 2) {
if(doScroll == 1) {
$.post(baseurl + 'ajax/images',{'id' : ID}, function(data) {
$("#wrapper_content").append(data);
if(data == 'Det finnes ikke flere bilder i databasen, WTF!? Send inn forslag ASAP!') {
doScroll = 0;
}
ID++;
});
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
由于Codeigniter期望在所有POST请求中都有TOKEN,因此当CSRF启用时,我无法使其工作.有什么建议?
启用CSRF时出错
无法加载资源:服务器响应状态为500(内部服务器错误)
如果我关闭CSRF,一切都很好......
ims*_*med 13
您可能想尝试我使用过的代码.它很棒:
<script type="text/javascript">
$(function(){
$('.answerlist').each(function(e){
$(this).click(function(){
var valrad = $("input[@name=answer]:checked").val();
var post_data = {
'ansid': valrad,
'<?php echo $this->security->get_csrf_token_name(); ?>' : '<?php echo $this->security->get_csrf_hash(); ?>'
};
$.ajax({
type: "POST",
url: "<?php echo base_url(); ?>online/checkanswer",
data: post_data,
success: function(msg){
/// do something
}
});
});
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
geo*_*iar 13
正如其他人所说 - 你必须使用AJAX请求参数发布CSFR令牌名称及其值.这是一个简单的解决方案,可以自动将其附加到每个AJAX请求.
这是我在主视图中放置的内容,因此在加载其他javascript文件之前,此代码在每个页面上:
<script>
var csfrData = {};
csfrData['<?php echo $this->security->get_csrf_token_name(); ?>']
= '<?php echo $this->security->get_csrf_hash(); ?>';
</script>
<!-- ... include other javascript files -->
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这是我在每个页面上包含的javascript文件的一部分:
$(function() {
// Attach csfr data token
$.ajaxSetup({
data: csfrData
});
});
Run Code Online (Sandbox Code Playgroud)
Tob*_*ias 10
如果需要,您可以在适当的位置回显令牌名称和哈希值.像这样的东西.
echo $this->security->get_csrf_token_name()
Run Code Online (Sandbox Code Playgroud)
和
echo $this->security->get_csrf_hash()
Run Code Online (Sandbox Code Playgroud)
或者,您可以像往常一样使用form_open()并使用从javascript为您生成的隐藏输入.禁用CSRF功能是错误的方法.
| 归档时间: |
|
| 查看次数: |
26042 次 |
| 最近记录: |