연결해야하는 WCF API가 있습니다. 나는 정말 그 코드에 액세스 할 수없는, 그러나 이것은 작동합니다PHP cURL을 JavaScript로 변환 (WCF 서비스에 연결)
$user = "login";
$password = "pwdstr";
$service_credentials = "external_api_user:sometext";
$arg = $user.'|'.sha1($user."somestr".$password);
$url='https://mysteryUrl.svc/projectsapi/' . $arg;
// Get cURL resource
$curl = curl_init();
// Set some options - we are passing in a useragent too here
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url,
CURLOPT_USERAGENT => 'Codular Sample cURL Request',
CURLOPT_HTTPHEADER => array("Authorization: " . base64_encode("Basic " + service_credentials))));
// Send the request & save response to $resp
$resp = curl_exec($curl);
// Close request to clear up some resources
curl_close($curl);
echo $resp;
내가 동일한 API에서 데이터를 얻을 내 웹 페이지를하고 싶습니다. 지금까지이 문제를 해결하기 위해 노력해 왔습니다.
function requestFromApi() {
var user = "login";
var password = "pwdstr";
var service_credentials = "external_api_user:sometext";
var arg = user + '|' + sha1(user + "somestr" + password);
var url = 'https://mysteryUrl.svc/projectsapi/' + arg;
$.ajax({
url: url,
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", base64_encode("Basic " + service_credentials));
xhr.setRequestHeader("User-Agent",'Codular Sample cURL Request');
},
type: 'GET',
dataType: 'json',
contentType: 'application/json',
success: function (data) {
alert(JSON.stringify(data));
},
error: function(){
alert("Cannot get data");
}
});
};
물론 작동하지 않습니다. 임 전적으로 웹 개발에 새로운, 그래서 어떤 도움을 크게 주시면 감사하겠습니다.
크롬 콘솔이 발생, 페이지로드 할 때 : 나는 헤더를 설정하는 방법
Refused to set unsafe header "User-Agent"
XMLHttpRequest cannot load http s://verylongUrlAsInTheCodeAbove. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access. The response had HTTP status code 400.
를? 적어도 하나의 문제가 다른 도메인에 액세스하려고 시도하는 것 같습니다. 어떻게 그렇게 할 수 있습니까?
JavaScript를 사용하여이 API에 액세스하는 다른 방법이 있습니까? 기본적으로 내 데이터 작업을 다시 보낼 바보 같은 PHP 'API'를 만들 수 있습니까? 명언을 열어 라. 미리 감사드립니다!
편집
: 나는 JSONP 사용 :<head>
<script type="text/javascript" src="js/jquery-2.1.1.js"></script>
<script type="text/javascript" src="js/jquery.mobile-1.4.5/jquery.mobile-1.4.5.js"></script>
<script type="text/javascript" src="js/functions.js"></script>
<script>
alert('1');
$(document).ready(function requestFromApi() {
var user = "login";
var password = "pwdstr";
var service_credentials = "external_api_user:sometext";
var arg = user + '|' + sha1(user + "somestr" + password);
var url='https://mysteryUrl.svc/projectsapi/' + arg;
$.ajax({
url: url+"?callback=?",
beforeSend: function(xhr) {
xhr.setRequestHeader("Authorization", base64_encode("Basic " + service_credentials));
xhr.setRequestHeader("User-Agent",'Codular Sample cURL Request');
},
type: 'GET',
dataType: 'json',
contentType: 'application/json',
success: function (dataWeGotViaJsonp) {
alert(dataWeGotViaJsonp);
},
error: function(){
alert("Cannot get data");
}
});
});
alert('2');
</script>
</head>
을 그리고 지금은 잘못된 요청 오류가 발생합니다. 그래서 오류가 어디에 있을까요?
감사합니다 :) JSONP를 사용하고 어딘가에 도착했습니다. 이제는 잘못된 요청 오류가 발생하지만 적어도 뭔가를 보내고 뭔가를 얻는 것을 의미합니다. 내 시작 메시지 편집에 더 많은 코드가 있습니다! –
또한, 내 PHP는 wcf가 아닌 다른 도메인에 있으므로 wcf 쪽을 변경해야 할 필요가 없어야한다고 생각합니다. 내가 맞습니까? –
그래, WCF 서비스는 내가 할 수 없었던 변화를 필요로했다. 그러나 운 좋게도 동료는 그것을했다. 그리고 지금 그것 모두는 작동한다. 내가 cors 헤더 였는지 확실하지 않지만, 일반적인 방향으로 나를 보내 주셔서 감사합니다! –