2012-11-11 5 views
1

jQueryMobile을 사용하고 있습니다. http 요청을하고 싶지만 응답이 필요하지 않습니다. 요청이 성공할 것이라는 것을 거의 알고 있기 때문입니다. 문제 : 요청이 외부 서버를 대상으로하므로 JSONP 만 사용할 수 있습니다. 하지만 서버 doens't 지원하고 단순히 일반 텍스트 또는 유효한 xml 반환합니다 (나는 요청 URL을 변경할 수 있습니다). 오류없이이 요청을하려면 어떻게해야합니까?대답을 사용하지 않고 외부 HTTP 요청

아약스에서 jsonp를 사용할 때 오류가 발생하며 구문 오류가 발생합니다. 요청을 일반적인 ajax/text/xml 요청으로 만 보내면 서버가 전혀 접속되지 않습니다. 나는 SMS 게이트웨이에 연락하고 SMS를받지 않기 때문에 이것을 알고있다.

내 해결 방법은 현재 해당 URL의 src와 display : none의 새 iframe을 삽입하는 것입니다. 파이어 폭스에서 잘 작동하지만 이것이 (유일한) 해결책이 아닌지 의심 스럽다.

어떤 솔루션이 있습니까?

답변

2

나는 당신이 이미 가장 좋은 대답을 구현했다고 생각합니다. 의는 제약을 통해 살펴 보겠습니다 :

  1. 이 동일 출처를 확인하는 다양한 HTML5, 플래시 또는 자바 API를 사용할 수 있도록, 당신은 통제하지 않는 서버에 출처 간 요청합니다.

  2. 그러면 원격 리소스를로드 할 일부 DOM 요소가 삽입됩니다.

  3. 내용 유형이 잘못되었으므로 <script>이 수행하지 않는다고 결정했습니다.

  4. 마찬가지로 <img>, <embed>, 또는 <object> 사용할 수 없으며, 사람들은 그들이 일 경우에도 악 hackish 선택이 될 것입니다.

브라우저에서 요청하려면 이 남은 유일한 선택이라고 생각합니다.

원격 API로 프록시하는 자체 서버에 API를 구현할 수도 있습니다. 그런 다음 XHR을 사용하여 요청을 할 수 있으며 원하는 경우 클라이언트에서 전체 오류 검사를 수행 할 수 있습니다.

+1

답장을 보내 주셔서 감사합니다. iframe을 사용하는 것은 모든 브라우저에서 숨겨지기 쉽지 않기 때문에로드되지 않았기 때문입니다. 나는 숨겨진 iFrames가 웹 사이트에 악의적 인 코드를 삽입하는 일반적인 트릭이라고 생각한 후 약간의 연구를 수행했다. 필자는 파이어 폭스와 사파리 모바일을 iPad에서 테스트했는데 둘 다 작동했습니다. iframe은 전혀 표시되지 않았지만 분명히로드되었습니다. 각 시도에서 게이트웨이의 SMS를 받았습니다. – Zim84

관련 문제