답변:
Apache에서 제한은 구성 가능한 값인 LimitRequestLine
. 더 긴 요청 URI를 지원하려면이 값을 기본값 인 8190보다 큰 값으로 변경하십시오. 값은 /etc/apache2/apache2.conf에 있습니다. 그렇지 않은 경우 LimitRequestLine 10000
아래에 새 줄 ( )을 추가합니다 AccessFileName .htaccess
.
그러나 실제로이 한도에 도달하면 처음 GET
부터 악용 하는 것일 수 있습니다 . POST
이러한 종류의 데이터를 전송 하는 데 사용해야 합니다. 특히 값을 업데이트하는 데 사용하고 있다는 것을 인정하기 때문에 특히 그렇습니다. 위의 링크를 확인하면 아파치가 "정상 조건에서는 기본값에서 값을 변경해서는 안됩니다."라고 말하는 것을 알 수 있습니다.
POST
. POST를 사용하는 것에 대해 방금 게시 된 필드로 동일한 양식을 채우는 것을 배제 할 수 없으므로 그 의미를 잘 모르겠습니다.
LimitRequestLine
httpd.conf 파일에서 단어를 찾을 수없는 경우 원하는 곳에 직접 줄을 추가하십시오. 예 :LimitRequestLine 100000
John의 답변에 따라 GET 요청을 POST 요청으로 변경했습니다. 서버 구성을 변경하지 않고도 작동합니다. 그래서 이것을 구현하는 방법을 찾아 보았습니다. 다음 페이지가 도움이되었습니다.
PHP를 사용한 jQuery Ajax POST 예제 (게시 된 데이터 삭제 설명 참고) 및
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
기본적으로 차이점은 GET 요청이 하나의 문자열에 url과 매개 변수를 포함하고 null을 전송한다는 것입니다.
http.open("GET", url+"?"+params, true);
http.send(null);
반면 POST 요청은 URL과 매개 변수를 별도의 명령으로 보냅니다.
http.open("POST", url, true);
http.send(params);
다음은 작동하는 예입니다.
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>';
?>
문제없이 12,000 자 이상을 보냈습니다.
간단한 해결 방법이 있습니다.
URI stringdata
에 너무 긴 문자열이 있다고 가정합니다 . 서버의 한계에 따라 간단히 여러 부분으로 나눌 수 있습니다. 그런 다음 첫 번째 파일을 제출하십시오. 제 경우에는 파일을 작성하십시오. 그런 다음 이전에 추가 된 데이터에 추가 할 다음 항목을 제출합니다.
JQuery에서 $ .getJSON ()을 사용한 후이 오류가 발생했습니다. 방금 게시하도록 변경했습니다.
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!");
});
에서 발췌 RFC 2616 : Hypertext Transfer Protocol-HTTP / 1.1 :
그만큼 POST의 방법은 원본 서버가 Request-Line의 Request-URI가 식별하는 자원의 새로운 부속물로서 요구에 포함 된 엔터티를 접수 할 것을 요구하는 데 사용한다. POST는 균일 한 방법으로 다음 기능을 처리 할 수 있도록 설계되었습니다.
- 기존 자원의 주석
- 게시판, 뉴스 그룹, 메일 링리스트 또는 유사한 기사 그룹에 메시지 게시
- 양식 제출 결과와 같은 데이터 블록을 데이터 처리 프로세스에 제공 .
- 추가 작업을 통해 데이터베이스 확장.