2011-03-07 2 views
0

2 단계 게시물을 수행하고 싶습니다. 첫 번째는 "email = blah & dude = car"등과 같은 양식 데이터를 만드는 내 서비스에 대한 AJAX 게시물입니다.ajax를 호출하여 원격 URL에 게시 된 양식 데이터

AJAX 호출에 대한 콜백에서 해당 데이터를 원격 사이트에 다시 게시해야합니다. 정상적인 게시물.

var formData = "some form data"; 
$.ajax({ 
    type: 'POST', 
    url: '/myservice', 
    data: formData, 
    success: function(data, status) { 
      xmlhttp=new XMLHttpRequest(); 
         xmlhttp.open("POST","http://remotepage.com",true); 
         xmlhttp.send(data); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     //display error message  }, 
    dataType: "text", 
}); 

그러나, HttpRequest에 의한 remotepage.com에 XSS 방지에 실패합니다

내가 좋아하는 뭔가를 생각했다. 처리 된 양식 데이터를 원격 URL에 쉽게 다시 게시하려면 어떻게합니까?

+0

당신이 당신의 웹 서비스에서 서버 측에서 재 게시를 수행 할 수 있습니다

function postToRemote(data, status) { $("#empty_container_for_form").load("http://remotepage.com/get_hidden_form", function() { $("#hidden_form input#attribute_1").val(data.attribute1); $("#hidden_form input#attribute_2").val(data.attribute2); $.post({ url: "http://remotepage.com", data: $("#hiddenForm").serialize() }); }); }

또한, 확실 형태로 숨겨져 사용하여 CSS를 만들어? – mellamokb

답변

1

http://remotepage.com에 호스트 된 사이트가 아닌 한 에 http://remotepage.com (xmlhttp.open("POST","http://remotepage.com",true);)으로 AJAX 요청을 보내면 작동하지 않습니다.

이렇게하려면 도메인과 원격 도메인 사이의 다리 역할을하는 서버 측 스크립트를 설정해야하며 그러면 스크립트에 AJAX 요청을 보냅니다. 원격 도메인은 당신이 직접 요청을 보낼 수 JSONP 지원하는 경우

var formData = "some form data"; 
$.ajax({ 
    type: 'POST', 
    url: '/myservice', 
    data: formData, 
    success: function(data, status) { 
     $.post('/some_bridge_script', formData); 
    }, 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
     //display error message  }, 
    dataType: "text", 
}); 

을하지만, 단지 GET 요청으로 제한됩니다 : 당신이 jQuery를 사용하고 있기 때문에뿐만 아니라 성공 콜백을 사용하는 것이 더 자연스러운 것 같다 .

+0

그의 질문에 대한 재조명. – mellamokb

+0

@mellamokb, 죄송합니다. 아직 답을 수정하고있었습니다. –

+0

확인. 가상 양식을 작성한 다음 .submit()을 사용하면 어떨까요? – user648960

0

수정/생성하려는 리소스의 양식을 묻는 remotepage.com에 배경 GET 요청을 보내야합니다. 이렇게하면 리모트 페이지가 쿠키 저장소에 진위 토큰을 설정할 수 있습니다. 이 양식을 숨기고 myservice에 성공적으로 게시 된 데이터로 채우고 숨겨진 양식을 게시하십시오. 이렇게하면 remotepage.com은 귀하가 신뢰할 수 있는지 확인할 수있는 기회를 갖게됩니다.

편집 : 추가 코드 샘플

여기에 내가 상상하고있는 무슨에 샘플 코드의 비트입니다 :

var formData = "some form data"; 
$.post({ 
    url: '/myservice', 
    data: formData, 
    success: postToRemote, 
    dataType: "JSON", 
    error: function(XMLHttpRequest, textStatus, errorThrown) { 
    // display error message 
    }, 
});

그래서 대신 텍스트를 반환 MYSERVICE는 처리 된 데이터를 포함하는 JSON 개체를 반환해야 아래에 귀하의 의견에 대해 이야기. 콜백은 remotepage에서 원하는 양식을 요청합니다. 로드가 완료되면 익명 함수()의 블록이 실행되어 양식을 채운 다음 제출합니다.

#empty_container_for_form { display: none; }

+0

내 페이지에 사용자가 Paypal에 정보를 게시 할 수있는 HTML 양식을 포함시킬 수 있습니다 ... 그럼 왜 그 후행 프로세스를 자동화 할 수 없습니까? – user648960

+0

@ user648960, 아마도 페이팔에 제출하는 양식에 인증 토큰이있을 것입니다. 맞습니까? api 키 또는 당신이 그들로부터 요청하는 그런 것들? – muirbot

+0

지금까지 도와 줘서 고마워! 양식과 함께 전송되는 사용자 ID가 있습니다. 그러나 페이팔 사이트에 게시하기 전에 모든 정보가 서버에있는 데이터 개체로 작성되기를 바랍니다. 그래서 그 데이터 문자열을 양식 요소에 넣고 수동으로 게시 할 수 있습니까? 내가 반환 된 데이터를 구문 분석하고 양식 요소를 작성하고 싶지 않아. – user648960

관련 문제