您從http://bulksms.icubetech.com/api/checkbalance.php
得到的回覆應該在其標題中包含Access-Control-Allow-Origin
。
它應該是這樣的:
Access-Control-Allow-Origin: yoursite.com
,如果上述要求未得到滿足,則無法通過AJAX訪問此網站。
或者,您可以使用代理php腳本來完成此操作。這個想法是在你自己的域名中獲得一個php腳本,與你試圖訪問的站點交談並給你結果。這不會引發任何跨域問題,因爲您的瀏覽器只與您自己域中的php腳本進行通信。這是一個示例代理腳本。請更改它以滿足您的需求。
<?php
// Allowed hostname
define ('HOSTNAME', 'http://Your_Server/');
//returns the headers as an array
function getHeaders()
{
$headers = array();
foreach ($_SERVER as $k => $v)
{
if (substr($k, 0, 5) == "HTTP_")
{
$k = str_replace('_', ' ', substr($k, 5));
$k = str_replace(' ', '-', ucwords(strtolower($k)));
$headers[$k] = $v;
}
}
return $headers;
}
// Get the REST call path from the AJAX application
$path = $_REQUEST['path'];
$url = HOSTNAME.$path;
// Open the Curl session
$session = curl_init($url);
// If it's a POST, put the POST data in the body
if ($_POST['path']) {
$postvars = '';
while ($element = current($_POST)) {
$postvars .= key($_POST).'='.$element.'&';
next($_POST);
}
$postvars = substr($postvars, 0, -1); // removing trailing &
$postvars = str_replace('xml_version', 'xml version', $postvars); // fix xml declaration bug?
$postvars = stripslashes($postvars);
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $postvars);
}
else {
//If it's a post, but not a form post (like a SOAP request)
if ($_SERVER['REQUEST_METHOD']==='POST') {
curl_setopt ($session, CURLOPT_POST, true);
curl_setopt ($session, CURLOPT_POSTFIELDS, $HTTP_RAW_POST_DATA);
$headers = getHeaders();
$header_array = Array("Content-Type: text/xml", "SOAPAction: " . $headers['SOAPAction']);
curl_setopt ($session, CURLOPT_HTTPHEADER, $header_array);
curl_setopt ($session, CURLOPT_CUSTOMREQUEST, "POST");
}
}
// Don't return HTTP headers. Do return the contents of the call
curl_setopt($session, CURLOPT_HEADER, false);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
// Make the call
$xml = curl_exec($session);
// The web service returns XML. Set the Content-Type appropriately
header("Content-Type: text/xml");
echo $xml;
curl_close($session);
?>
你是在本地主機還是外部服務器上運行這個頁面? –
在本地主機和我試圖在w3school這兩個地方給了我同樣的錯誤 – Shaik
@MariusBalaj,這將不會改變任何:-) @Shaik,這是因爲'http://bulksms.icubetech.com/ api /'服務器不允許跨域請求,您通過從其頁面之外調用'jQuery.load()'方法來完成。唯一的解決方案是:** 1 **更改服務器配置,以便它允許這樣的請求(不容易,如果它不是您的服務器),** 2 **使用代理服務器。 – Kaiido