간단히 말해서 PDF 양식을 처리하는 응용 프로그램을 개발 중입니다. 제출 데이터 형식은 XFDF입니다. 지금까지는 그렇게 좋았지 만 클라이언트로부터 아주 이상한 행동을하고 있습니다.HTTP를 통해 PDF 양식 데이터를 제출하는 방법은 무엇입니까?
PDF 뷰어는 IE의 Adobe Reader (현재 11.0.6)입니다. 이것은 내부 애플리케이션이므로 지금 당장은 다른 것을 지원할 필요가 없습니다. PDF는 서버에서 동적으로 생성되므로 독립 실행 형 응용 프로그램이 아닌 브라우저에서이 작업을 수행해야합니다.
워크 플로는 이것이다 :
- 전자 메일 메시지는 응용 프로그램 내부의 URL에 대한 링크를 포함하는, 사용자에게 전송됩니다.
- 사용자가 링크를 클릭합니다. 브라우저가 열리고 지정된 URL을 요청합니다.
- 응용 프로그램은 PDF 파일 (콘텐츠 유형 application/pdf)을 제공합니다.
- 사용자가 PDF 내에서 양식을 완성합니다.
- 사용자가 양식의 "제출"버튼을 클릭합니다.
- PDF 뷰어와 브라우저는 어떻게 든 폼 데이터를 POST와 협력하여 양식 자체와 URL이 약간 다른 (양식 URL은 슬래시로 끝나고 제출 작업 URL은 "submit"입니다./"이므로 추가됩니다).
- 응용 프로그램에서 데이터를 처리하고 상태 페이지로 303 리디렉션을 반환합니다. ( 은 302를 보내면 똑같이 발생합니다.)
- 브라우저가 상태 페이지 (및 참조 된 모든 리소스)를 얻습니다.
무엇 실제로 8 단계에서 발생하는 것은 이것이다 : 브라우저가 상태 페이지를 요청하지만 페이지에서 참조하는 CSS 스타일 시트에 도달 할 때, 그것은이 전송 :
GET /static/app.css HTTP/1.1
Accept: text/css, */*
Acrobat-Version: 11.0.6
Accept-Language: en-GB
Content-Type: application/vnd.adobe.xfdf; charset=utf-8
Content-Length: 1824
Referer: http://application/report/2014-03-28/925/
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko
Accept-Encoding: gzip, deflate
Host: application
DNT: 1
Connection: Keep-Alive
Cookie: sessionid=12345
주 그 요청 Content-Type 및 Content-Length 헤더가 모두 포함되어 있습니다. GET 요청에 대해 매우 특이한 내용이지만, 은 요청 본문이 아니고 1 바이트가 아니라 1824 개입니다. 내 서버는 IIS입니다.이 요청에 대해 400 개의 잘못된 동사가 응답합니다 (특정 오류는 아닌 이유는 확실하지만 400은 확실하게 정당화됩니다).
상태 페이지 자체에 대한 요청이 이 아니고에 이러한 헤더가 포함되어 있습니다. 그것은 완벽하게 정확합니다. 어떤 이유로 스타일 시트 요청은 양식 제출 두 개의 요청에서 헤더를 더 일찍 반복합니다.
불행히도 HTTP를 통해 PDF 양식 데이터를 전송하는 데 필요한 문서가 많지 않지만, 제가 아는 한 모든 것을 올바르게하고 있습니다. 이 버그는 Adobe Reader 플러그인 및/또는 IE의 버그라고 가정합니다. 누구든지 그것을 해결할 방법을 생각할 수 있습니까?
내 제출 명령은 "양식 제출"작업이있는 기본 PDF 양식 버튼입니다. 필드는 XFDF로만 사용됩니다. URL은 #FDF로 끝나지 않습니다. 그 이유는 XFDF가 아닌 FDF로 제출하기 위해 _only_이기 때문입니다. #FDF로 처음 시도했지만 다른 방식으로 실패했습니다 (제출이 즉시 반복되었고 리디렉션이 따르지 않음). 또한 HTTP 리디렉션을 반환하지 않는이 코드의 이전 버전이 있었지만 상태 페이지로 돌아가는 대신 양식 자체에 상태 필드를 설정하는 XFDF 문서가있었습니다. 그것은 제대로 작동했지만 항상 두 개의 탭이 필요했습니다. – Christian