AJAX만의 루트를 제한할 수 있습니까?
XHR 요구에 대해서만 Symfony 2 루트를 제한할 수 있습니까?AJAX를 통해서만 접근할 수 있는 루트를 선언하고 싶습니다.
다음과 같이 각 AJAX 고유의 액션에 몇 줄 더 추가하고 싶지 않습니다.
if ($request->isXmlHttpRequest()) {
// do something
} else {
// do something else
}
정의하고 싶다:
- AJAX 요청에 대한 규칙 1개
- 동일한 URL에 대한 GET/POST 요구에 대한 규칙 1개
위와 같은 상태를 피하기 위해서입니다.
이 질문이 좀 오래된 것은 알지만, 그 사이에 Symfony 2.4에 새로운 방법이 도입되었습니다.
Ajax 제한의 경우 다음과 같습니다.
contact:
path: /contact
defaults: { _controller: AcmeDemoBundle:Main:contact }
condition: "request.isXmlHttpRequest()"
주석에서도 가능합니다.
/**
* ContactAction
*
* @Route("/contact", name="contact", condition="request.isXmlHttpRequest()")
*/
디폴트가 아닌 독자적인 라우터 서비스를 정의하는 것이 권장됩니다.이러한 서비스에서는,Symfony\Bundle\FrameworkBundle\Routing\Routermethod resolve Parameters()를 재정의하여 추가 요건을 처리하기 위한 독자적인 로직을 구현합니다.
다음으로 라우팅에서 다음과 같은 작업을 수행할 수 있습니다.
your_route:
pattern: /somepattern
defaults: { somedefaults }
requirements:
_request_type: some_requirement
요청이 발생하는 것을 막을 수 있을지 확실하지 않지만 현재 요청을 확인함으로써 컨트롤러에서 XHR 요청을 확인할 수 있습니다.
코드는 다음과 같습니다.
if ($request->isXmlHttpRequest()) {
// ...
}
브라우저의 불일치 및 프록시 간섭의 가능성이 있기 때문에 이 방법은 100% 신뢰할 수 없습니다.그러나 이는 비동기 요청을 확인하는 주요 방법이며 많은 사람들이 권장하고 있습니다.cr의 경우
URL 파라미터
또는 URL에 파라미터를 추가하여 요청을 비동기식으로 식별하는 방법도 있습니다.이것은, 다음의 추가에 의해서 실현됩니다.?ajax=1를 참조해 주세요.다음으로 파라미터를 확인합니다.
$AjaxRequest = $request->getParameter('ajax');
If($AjaxRequest == 1) {
//...
}
물론 이 시점에서 특정 경로를 생성할 수도 있습니다. /ajax/index/.
아니, 너는 할 수 없어.사용하는 프레임워크에 따라 달라지지 않습니다.AJAX 요청은 기본적으로 서버에 대한 요청일 뿐입니다.100% 신뢰할 수 있는 솔루션은 없습니다.단순히 '핵'입니다.
찾으려는 항목이 Symfony 라우팅 구성에 없습니다.
요청: isXmlHttpRequest는 100% 신뢰성이 없으며 JavaScript 라이브러리가 저장한HTTP 헤더를 체크합니다.
JavaScript 라이브러리가 X-Requested-With HTTP 헤더를 설정한 경우 작동합니다.프로토타입, Mootools, jQuery와 함께 작동하는 것으로 알려져 있습니다.
기재된 결과에 도달하기 위한 요건을 사용할 수 있습니다.
예를 들어으로 루트를 하면, 으로 해야 .
my_route:
pattern: /path/to/route
defaults: { _controller: CompanyBundle:Controller:Action, _format: html }
requirements:
_format: xmlhttp /* not sure about the correct format because
i've never checked about */
물론 '아까', '아까', '아까', '아까', '아까', 이런 쓸 수 있어요._method: POST ★★★★★★★★★★★★★★★★★」_method: GET
언급URL : https://stackoverflow.com/questions/11557658/is-it-possible-to-restrict-a-route-for-ajax-only
'programing' 카테고리의 다른 글
| 도커 구성 볼륨 사용 권한 리눅스 (0) | 2023.02.11 |
|---|---|
| 이 경고 메시지는 무엇을 의미합니까?'img 요소에는 의미 있는 텍스트가 포함된 alt 소품이나 장식 이미지용 빈 문자열이 있어야 합니다.' (0) | 2023.02.11 |
| 하나 이상의 어레이가 비어 있으면 merge_array가 null을 반환합니까? (0) | 2023.02.11 |
| json_encode()를 사용할 때 어레이 인덱스 참조를 제거하는 중 (0) | 2023.02.11 |
| AngularJS 인텔리센스가 Visual Studio 2015에서 작동하지 않음 (0) | 2023.02.11 |