2011-01-20 4 views
1

나는 해결하려고하는 복잡한 해결책이 있습니다.프록시없이 wcf 서비스에 jquery 도메인 간 게시

서버 1에서 호스팅되는 wcf 서비스 (.net 4.0)가 있습니다. 서버 1은 PCI 호환입니다.

서버 2는 클라이언트 웹 사이트입니다. 이 웹 사이트에는 신용 카드 양식이 있습니다. 또한 양식 게시를 납치하는 jquery 플러그인이 있습니다. 서버 2는 PCI와 호환되지 않습니다. 신용 카드 형태 에서

데이터는 내 jQuery 플러그인에서 내 WCF 서비스 (에서 JSON, JSON 아웃)를 호출하는 것을 시도하고, 2

그래서 서버에 게시 할 수 없습니다 수 있습니다. 내 게시물 데이터가 해당 서버로 이동한다는 의미이므로 서버 2에서 프록시를 사용할 수 없습니다.

따라서 양식 데이터는 server2를 완전히 우회하면서 클라이언트 시스템에서 직접 서버 1로 이동해야합니다. 와 WFC 서비스에 크로스 도메인 Ajax 호출을 할 수있는 방법이 있나요

XMLHttpRequest cannot load http://server1/MySite.Services/PaymentService.svc/SubmitCreditCardPayment . Origin http://server2 is not allowed by Access-Control-Allow-Origin.

:

그러나 나는 내가 여전히 오류가 발생, 서버 1에 crossdomain.xml 파일을 사용하는 방법에 대한 몇 가지 게시물을 보았다 json과 json out?

jquery ajax를 사용하여이 작업을 수행하지 않을 것입니다. jquery를 사용하여 데이터 크로스 도메인을 보내는 또 다른 솔루션이 있다면 그 정보를 듣고 싶습니다.

편집 :

명확히하기 위해, 여기 내 서비스의 모습입니다.

PaymentResponse SubmitCreditCardPayment(CreditCardRequest request); 

요청 및 응답 객체 속성 (DataContract/DataMember)와 단지 클래스이다.

답변

0

JSONP을 사용해 보셨습니까?

소스 대상에 제한이없는 스크립트 태그를 사용하여 클라이언트에서 server1의 서비스를 호출하는 간단한 방법입니다. json env에서 해석 된 json 응답을 얻으려면 콜백 (예 : foo(data))이 필요하며이 콜백 이름을 GET 매개 변수로 ajax 쿼리에 설정해야합니다. 그리고 목표로 한 ajax 서비스는 foo에 대한 호출로 json 응답을 둘러 쌉니다. foo({json: things}).

편집 : 당신이 JSON-P를 테스트했지만이 확보되지 ;: 당신의 발언에 대한 대응 (및 사용 GET) :

당신이 바로 JSON-P있어 보안에 매우 좋지 않다 . 그러나 CORS은 응용 프로그램에 허용 된 브라우저 수를 줄입니다 (최근 브라우저 만). 오류 메시지는 CORS 오류 메시지입니다. js에서 요청한 경우 CORS 구현에 문제가있는 경우 구형 브라우저에 JSON-P 대체가 필요합니다.

jQuery 매직 아약스 함수를 사용하더라도 나쁜 보안 화 된 json-p 또는 불량 CORS를 사용하는 문제가 발생합니다.

다른 해결책 중 하나는 server1의 하위 도메인으로 server2를 사용하는 것이지만 신용 카드 결제의 경우 귀하의 사례가 아닌 것으로 간주합니다.

에 crossdomain.xml 파일은 사람의 수는 다시 응용 프로그램을 사용할 수 감소, 플래시 (헐떡 거림)의 전체 아약스 과정을 만들기 위해 사용할 수있는 유일한 플래시 응용 프로그램이 아닌 JS,하지만 존재 (최근) 플래시 지원을 기반으로합니다. 진짜 해결책으로 플래시에 대해 말하고 있습니다 ...

+0

예, 있습니다. jsonp는 get 요청에서만 작동합니다. 즉, 쿼리 문자열을 통해 신용 카드 정보를 전달해야합니다. 이는 웹 서버가 PCI에 위배되는 데이터를 기록하기 때문에 이상적이지 않습니다. – Josh

+0

@ Josh : 네 말이 맞아, 내 대답을 편집 했어. – regilero