Saya telah mengembangkan aplikasi web PHP. Saya memberikan opsi kepada pengguna untuk memperbarui beberapa masalah sekaligus. Saat melakukannya, terkadang pengguna mengalami kesalahan ini. Apakah ada cara untuk meningkatkan panjang URL di apache?
Saya telah mengembangkan aplikasi web PHP. Saya memberikan opsi kepada pengguna untuk memperbarui beberapa masalah sekaligus. Saat melakukannya, terkadang pengguna mengalami kesalahan ini. Apakah ada cara untuk meningkatkan panjang URL di apache?
Jawaban:
Di bawah Apache, batasnya adalah nilai yang dapat dikonfigurasi LimitRequestLine
,. Ubah nilai ini menjadi nilai yang lebih besar dari defaultnya 8190 jika Anda ingin mendukung URI permintaan yang lebih panjang. Nilainya ada di /etc/apache2/apache2.conf . Jika tidak, tambahkan baris baru ( LimitRequestLine 10000
) di bawahAccessFileName .htaccess
.
Namun, perhatikan bahwa jika Anda benar-benar mencapai batas ini, Anda mungkin menyalahgunakannya sejak GET
awal. Anda harus menggunakan POST
untuk mengirimkan data semacam ini - terutama karena Anda bahkan mengakui bahwa Anda menggunakannya untuk memperbarui nilai. Jika Anda memeriksa tautan di atas, Anda akan melihat bahwa Apache bahkan mengatakan "Dalam kondisi normal, nilainya tidak boleh diubah dari default."
POST
. Tidak ada tentang penggunaan POST yang menghalangi Anda untuk mengisi formulir yang sama dengan bidang yang baru saja diposting, jadi saya tidak yakin apa yang Anda maksud dengan itu.
LimitRequestLine
di mana pun di file httpd.conf Anda, cukup tambahkan barisnya sendiri di mana pun Anda suka. Misalnya:LimitRequestLine 100000
Berdasarkan jawaban John, saya mengubah permintaan GET menjadi permintaan POST. Ini berfungsi, tanpa harus mengubah konfigurasi server. Jadi saya pergi mencari cara menerapkan ini. Halaman-halaman berikut sangat membantu:
Contoh jQuery Ajax POST dengan PHP (Perhatikan komentar sanitize diposting data) dan
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
Pada dasarnya, perbedaannya adalah bahwa permintaan GET memiliki url dan parameter dalam satu string dan kemudian mengirimkan null:
http.open("GET", url+"?"+params, true);
http.send(null);
sedangkan permintaan POST mengirimkan url dan parameter dalam perintah terpisah:
http.open("POST", url, true);
http.send(params);
Berikut adalah contoh yang berfungsi:
ajaxPOST.html:
<html>
<head>
<script type="text/javascript">
function ajaxPOSTTest() {
try {
// Opera 8.0+, Firefox, Safari
ajaxPOSTTestRequest = new XMLHttpRequest();
} catch (e) {
// Internet Explorer Browsers
try {
ajaxPOSTTestRequest = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
ajaxPOSTTestRequest = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}
ajaxPOSTTestRequest.onreadystatechange = ajaxCalled_POSTTest;
var url = "ajaxPOST.php";
var params = "lorem=ipsum&name=binny";
ajaxPOSTTestRequest.open("POST", url, true);
ajaxPOSTTestRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
ajaxPOSTTestRequest.send(params);
}
//Create a function that will receive data sent from the server
function ajaxCalled_POSTTest() {
if (ajaxPOSTTestRequest.readyState == 4) {
document.getElementById("output").innerHTML = ajaxPOSTTestRequest.responseText;
}
}
</script>
</head>
<body>
<button onclick="ajaxPOSTTest()">ajax POST Test</button>
<div id="output"></div>
</body>
</html>
ajaxPOST.php:
<?php
$lorem=$_POST['lorem'];
print $lorem.'<br>';
?>
Saya baru saja mengirim lebih dari 12.000 karakter tanpa masalah.
Saya memiliki solusi sederhana.
Misalkan URI Anda memiliki string stringdata
yang terlalu panjang. Anda cukup memecahnya menjadi beberapa bagian tergantung pada batas server Anda. Kemudian kirimkan yang pertama, dalam kasus saya untuk menulis file. Kemudian kirimkan yang berikutnya untuk ditambahkan ke data yang ditambahkan sebelumnya.
Saya mendapat kesalahan ini setelah menggunakan $ .getJSON () dari JQuery. Saya baru saja mengubah postingan:
data = getDataObjectByForm(form);
var jqxhr = $.post(url, data, function(){}, 'json')
.done(function (response) {
if (response instanceof Object)
var json = response;
else
var json = $.parseJSON(response);
// console.log(response);
// console.log(json);
jsonToDom(json);
if (json.reload != undefined && json.reload)
location.reload();
$("body").delay(1000).css("cursor", "default");
})
.fail(function (jqxhr, textStatus, error) {
var err = textStatus + ", " + error;
console.log("Request Failed: " + err);
alert("Fehler!");
});
Kutipan dari RFC 2616: Hypertext Transfer Protocol - HTTP / 1.1 :
The POST metode yang digunakan untuk permintaan bahwa server asal menerima entitas tertutup di permintaan sebagai subordinat baru dari sumber daya diidentifikasi oleh Request-URI dalam Permintaan-Line. POST dirancang untuk memungkinkan metode seragam untuk mencakup fungsi-fungsi berikut:
- Anotasi sumber daya yang ada;
- Memposting pesan ke papan buletin, grup berita, milis, atau grup artikel serupa;
- Memberikan sekumpulan data, seperti hasil pengiriman formulir, ke proses penanganan data ;
- Memperluas database melalui operasi penambahan.