CodeIgniter throwing & quot; В указанном вами URI есть запрещенные символы … & quot; и я не могу понять, что вызывает это

Я получаю эту ошибку от CodeIgniter:

«Отправленный вами URI содержит запрещенные символы. …«

В этой строке JSON:

{"from":"[email protected]","to":"[email protected]","cc":"myadmin@ myapp.com, [email protected]","subject":"FROM APP: User Feedback","message":"FROM USER: [email protected]:\nHere's a test comment"}

Когда я пытаюсь кодировать это с помощью:

URLreadyJSON = encodeURIComponent(JSON.stringify(JsonObj));

(JsonObj будучи строкой JSON, упомянутой выше.)

URLreadyJSON решает:

https://127.0.0.1/Xhr/email/%7B%22from%22%3A%22feedback%40myapp.com%22%2C%22to%22%3A%22support%40myapp.com%22%2C%22cc%22%3A%22myadmin%40myapp.com%2C%20myfellowadmin%40myapp.com%22%2C%22subject%22%3A%22FROM%20APP%3A%20User%20Feedback%22%2C%22message%22%3A%22FROM%20USER%3A%20testy.testerson%40testme.com%3A%5CnHere's%20a%20test%20comment%22%7D

Соответствующий код:

function sendFeedback() {
JsonObj = {
'from': '[email protected]',
'to': '[email protected]',
'cc': '[email protected], [email protected]',
'subject': 'FROM APP: User Feedback',
'message': 'FROM USER: ' + $('#feedback_email').val() + ":\n" + $('#feedback_message').val()
}

URLreadyJSON = encodeURIComponent(JSON.stringify(JsonObj));

$.ajax({
url: "/Xhr/email/" + URLreadyJSON,
type: 'POST',
dataType: 'json',
success: function(data) {
$('#feedback_feedback').text(data.message);
if(!data.error) {
$("#feedback_popup").popup("open");   // Open confirm popup
$('#feedback_message').text('');      // Clear original message input
$('#feedback_email').text('');        // Clear sender email
setTimeout(function() { $("#feedback_popup").popup("close") }, 2500);
}
},
fail: function(data) {
console.log("FAIL");
console.log(data);
}
});
}

и, наконец, в моем конфигурационном файле CodeIgniter у меня есть permitted_uri_chars установлен в:

$config['permitted_uri_chars'] = 'a-z 0-9~%.,":_?&=;}{@-';

Я рассмотрел все решения, которые смог найти для этой ошибки (и их было несколько), и включил предложения безуспешно. Должно быть, я что-то упускаю и надеюсь, что кто-то может увидеть, что это такое.

2

Решение

Попробуйте изменить: —

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-\=';

К

$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-\=+';
3

Другие решения

function sendFeedback() {
JsonObj = {
'from': '[email protected]',
'to': '[email protected]',
'cc': '[email protected], [email protected]',
'subject': 'FROM APP: User Feedback',
'message': 'FROM USER: ' + $('#feedback_email').val() + ":\n" + $('#feedback_message').val()
}

$.ajax({
url: "/Xhr/email/",
type: 'POST',
dataType: 'json',
data : JsonObj, // add this
success: function(data) {
$('#feedback_feedback').text(data.message);
if(!data.error) {
$("#feedback_popup").popup("open");   // Open confirm popup
$('#feedback_message').text('');      // Clear original message input
$('#feedback_email').text('');        // Clear sender email
setTimeout(function() { $("#feedback_popup").popup("close") }, 2500);
}
},
fail: function(data) {
console.log("FAIL");
console.log(data);
}
});

}

сторона сервера:

$from: $this->input->post('from',true);
$to: $this->input->post('to',true);
$cc: $this->input->post('cc',true);
$subject: $this->input->post('subject',true);
$message: $this->input->post('message',true);
1

По вопросам рекламы [email protected]