私のアプリケーションでCodeIgniter3を使用していますが、フォームの中にはajaxを使用しています。私はcsrf_regenerate = TRUEに設定しました。最初は、(コンボボックスに入力するための)連続するajax呼び出しでcsrfトークンを渡すという問題がありましたが、解決しました。 CodeIgniter 3のCSRFとAjaxの問題
<script type="text/javascript" language="javascript">
var csfrData;
csfrTokenName = '<?php echo $this->security->get_csrf_token_name(); ?>';
csfrHash = '<?php echo $this->security->get_csrf_hash(); ?>';
setCSRF(csfrTokenName, csfrHash);
function setCSRF(name, value) {
csfrData = {}; // Reset csrfData to an empty array
csfrData[name] = value;
}
</script>
が続いてAjaxの呼び出しのために、私は次の操作を行います:すべてのコンボボックスを移入され
$('#department_id').change(function() {
var department_id=$("#department_id").val();
var domain=$("#domain").val();
$.ajax({
'type': "POST",
url: domain + "index.php/project/get_scheme",
data: {department_id: department_id, csrf_test_name: csfrData.csrf_test_name},
dataType: 'json',
success:
function(j){
setCSRF(j.csrfTokenName, j.csrfTokenHash);
if(j.schemes.length >= 2) {
var options = '';
for (var i = 0; i <= (j.schemes.length-1); i++) {
options += '<option value="' + j.schemes[i].id + '">' + j.schemes[i].name + '</option>';
}
$("#scheme_id").html(options);
$('#scheme_id option:first').prop('selected', 'selected');
}
}
});
});
この方法
は私がCSRFTokenを更新ページを持っています。しかし、最終的にフォームを送信すると、次のエラーが表示されます。
リクエストされた操作は許可されていません。
私がBurpsuiteを使用して確認したところ、今回はcsrf_token_nameとcsrf_cookieの値が一致せず、エラーが発生していました。私はなぜこれが起こっているのか理解できません。どんな指導も歓迎されます。
Mr Suneel ...私の質問を重複としてマークする前にその投稿を読んだことがありますか?私は解決しようとしている問題でかなりの時間を過ごしました – John
こんにちは!! get_schemeファイルでセッションやパーミッションを使用していますか? – Dario
wwwとwwwのないドメインをテストします。 – Dario