HTTP 414 "Request URI too long" 오류를 해결하려면 어떻게 해야 하나요?
저는 PHP 웹 앱을 개발했습니다.사용자에게 여러 문제를 한 번에 업데이트할 수 있는 옵션을 제공하고 있습니다.이 경우 사용자에게 이 오류가 발생할 수 있습니다.apache에서 URL의 lenight를 높일 수 있는 방법이 있나요?
Apache에서 제한은 구성 가능한 값입니다. 더 긴 요청 URI를 지원하려면 이 값을 기본값인 8190보다 큰 값으로 변경하십시오.값은 /etc/apache2/apache2.conf에 있습니다.그렇지 않은 경우 새 행을 추가합니다.LimitRequestLine 10000
)의 아래AccessFileName .htaccess
.
단, 실제로 이 한계에 도달하고 있는 경우, 당신은 아마도 이 제한을 악용하고 있을 것입니다.GET
우선은요.를 사용해 주세요.POST
이런 종류의 데이터를 전송할 수 있습니다. 특히 값을 업데이트하기 위해 데이터를 사용하고 있다는 사실조차 인정하기 때문입니다.위의 링크를 체크하면 Apache가 "정상적인 상황에서는 값을 기본값에서 변경하지 않아야 합니다."라고 말하는 것을 알 수 있습니다.
존의 답변을 바탕으로 GET 요청을 POST 요청으로 변경했습니다.서버 설정을 변경하지 않아도 동작합니다.그래서 어떻게 구현해야 하는지 찾아봤습니다.다음 페이지가 도움이 되었습니다.
jQuery Ajax POST의 예와 PHP (투고된 데이터 삭제에 주의)
http://www.openjs.com/articles/ajax_xmlhttp_using_post.php
기본적으로는 GET 요구의 URL과 파라미터가1개의 문자열에 포함되어 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()을 사용한 후 이 오류가 발생하였습니다.방금 POST로 변경했습니다.
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는, 통일된 방법으로 다음의 기능을 커버할 수 있도록 설계되어 있습니다.
- 기존 자원의 주석
- 게시판, 뉴스그룹, 메일링 리스트 또는 이와 유사한 기사 그룹에 메시지 게시
- 데이터 처리 프로세스에 양식 제출 결과 등의 데이터 블록 제공
- 추가 작업을 통해 데이터베이스 확장
언급URL : https://stackoverflow.com/questions/2891574/how-do-i-resolve-a-http-414-request-uri-too-long-error
'programing' 카테고리의 다른 글
도커 컨테이너를 통한 데이터베이스 연결 문제 (0) | 2022.12.31 |
---|---|
Panda Dataframe의 컬럼에서 NaN 값을 Zeroes로 대체하려면 어떻게 해야 합니까? (0) | 2022.12.21 |
Java 문자열에서 선행 및 후행 공백 제거 (0) | 2022.12.21 |
InterfaceError(0, ') (0) | 2022.12.21 |
java.net의 원인Socket Exception:연결을 재설정하시겠습니까? (0) | 2022.12.21 |