2017-09-15 4 views
0

업데이트 : 새로운 정보가 있기 때문에 질문을 다시 작성하십시오. 편집 내역이 표시됩니다.
OPTIONS (상태가 0 인 응답)로 요청시 CORS가 실패합니다.

문제 소개 나는 django-rest-framework 응용 프로그램이 하위 도메인 api.nrzonline.nl에서 실행해야합니다. 프런트 엔드 ng2 + webpack 응용 프로그램은 도메인 자체에서 실행 중입니다 nrzonline.nl. 이 API에 ng2-restangular로 요청을 보낼 때, 내 콘솔에서 다음과 같은 오류가 나타날 :

zone.js OPTIONS http://api.nrzonline.com/project/ net::ERR_EMPTY_RESPONSE 
EXCEPTION: Response with status: 0 for URL: null 

현재 문제
를 곱슬 머리와 꽤 테스트 후, 나는 모든 요청이 때 프리 플라이트 실패 발견 OPTIONS으로 요청을 보내주십시오.

-X GET와 요청이 제대로 작동 :

curl 'api.nrzonline.nl/skill/' -X GET 
[{"id":1,"category":{"id":1,"title":"skill-a",...}] 

-X OPTIONS와 (프리 플라이트) 요청이 로컬 장고 개발 서버의 API에이 -x OPTIONS 요청을 수행 응답이

curl 'api.nrzonline.nl/skill/' -X OPTIONS 
curl: (52) Empty reply from server 

실패 어떤없이 작동 이슈.

서버 설정

  • CORS_ORIGIN_ALLOW_ALL = True
  • CORS_ALLOW_METHODS
  • CORS_ALLOW_HEADERSOPTIONS 기본에 있습니다 기본적에

미들웨어 :

나는이 서버가 HTTPS 요청이 필요하지만, 현재 활동중인 SSL 인증서가 없을 가능성이 읽었습니다

text/plain 대신 application/json으로 질문을 요청을 보내기 --insecure (source)

  • curl하려고 않았다
    내가 놓친 게 무엇/잘못하고 따라서 -X OPTIONS의 프리 플라이트가 실패합니다. 가능한 해결책에 대한 모든 팁, 설명 또는 참조를 환영합니다.

  • 답변

    0

    응답 크레딧은 내 동생에 가서, 내 웹 사이트

    의 호스팅이 문제는 관련 DirectAdmin했다.기본적으로 DirectAdmin은 GET, POSTHEAD 만 허용합니다. OPTIONS이 문제를 해결해야 추가

    if ($request_method !~ ^(GET|HEAD|POST)$) { 
        return 444; 
    } 
    

    :

    이러한 설정은 다음과 같이 include /etc/nginx/webapps.conf;에서 발견된다. 요청 방법을 허용하도록 코드 블록을 제거하거나 주석 처리하십시오.

    그러나 /etc/nginx/webapps.conf을 수정하면 DirectAdmin이 새 HTTPD 업데이트 중에이 파일을 무시할 수 있습니다. 파일 <path_to_directadmin>/custombuild/costum/nginx/confconf 파일을 생성하는 데 사용됩니다. 여기서 수정하면 조정이 손실되지 않습니다.