저는 최근 Symfony Routing 구성 요소로 작업하기 시작했습니다. 다음과 같이 YAMLSymfony2 라우팅에서 http POST를 인식하지 못합니까?
내 경로 :.에 따라 그러나 URL을 https://my.domain.com/custom "는 사용자 정의 YAML 파일에 한 요청 방법 후에가는 경우에도 기본 경로로 해석됩니다
custom:
path: /custom
defaults: {controller: custom, action: refresh}
methods: [POST]
schemes: [https]
default:
path: /{controller}/{action}
defaults: {controller : index, action: index}
, 내 jQuery를 아약스 설정 및 크롬 콘솔, 는 POST입니다 :
XHR finished loading: POST "https://my.domain.com/custom".
또는 크롬에 따라 네트워크 -> 헤더 :
Request URL:https://my.domain.com/custom
Request Method:POST
나도 같은 YAML 구성을 떠나는 얻을 요청 방법을 변경하면 예상 물론, 이는 중 하나가 작동하지 않습니다. 사용자 정의에 대한 yaml 구성을 변경하면 POST 대신 GET을 받아들이고 GET 요청을 보내면 예상대로 작동합니다. 하지만 사용자 정의에 대한 yaml 구성을 변경하고 POST 요청을 보내면 작동합니다. 즉, 사용자 정의 규칙이 일치합니다. 어떤면에서는 브라우저의 POST 요청이 서버 측에서 GET으로 해석되는 것처럼 보입니다.
일종의 이상한 Chrome 버그 인 경우 Firefox와 동일한 결과를 보았습니다.
그런 다음 $ _SERVER [ 'REQUEST_METHOD'] 인쇄를 시도했으며 결과는 예상대로 POST 요청이 POST이면 GET 요청이 GET 인 경우 GET. 그래서 그것은 어딘가에서 Symfony의 잘못이라고 생각합니다. 아마도 내가 잘못 설정 한 것 같습니다. 난 그냥 여기에 요청 컨텍스트를 근본적으로 뭔가를 잘못하고 있어요 강한 느낌이
$args = isset($_REQUEST['args']) ? $_REQUEST['args'] : '';
$request = Request::createFromGlobals();
$locator = new FileLocator(HOME_PATH . 'config');
$loader = new YamlFileLoader($locator);
$routes = $loader->load('routes.yml');
$context = new RequestContext($_SERVER['REQUEST_URI']);
$context->setScheme($request->getScheme());
$context->setHost($_SERVER['SERVER_NAME']);
$matcher = new UrlMatcher($routes, $context);
try
{
$match = $matcher->match('/' . rtrim($args, '/'));
....
}
....
,하지만 그건 내가 그들 작업 얻을 관리 방법, 그리고 사용 :
은 여기 내 관련 PHP 코드입니다 지금까지 GET 경로로 잘 작동합니다. 도와 주셔서 미리 감사드립니다.
symfony2 표준 에디션 내에서 라우팅 구성 요소를 사용하고 있습니까? –
아니요, 개별적으로 구성 요소로 사용합니다. – Sejanus
좋아, 내가 도와 줄 수 없다. –