我想調用ASP.Net CMS上的PHP函數。我在不同的域上託管PHP文件,並且出現以下錯誤。訪問控制起源錯誤
XMLHttpRequest無法加載網址。原始網址不被Access-Control-Allow-Origin所允許。
我已添加標題('Access-Control-Allow-Origin:*');根據本網站上其他主題中的一些建議轉換爲PHP文件,但對我而言並沒有什麼不同。
這裏是我的代碼:
HTML
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.post('http://10.254.2.54/adobe%20air/application/Pulse/data.php', {
'text': $("#preceda").text()
},
function(response){
$("#details").html(response);
});
});
</script>
</head>
<body>
<div id="preceda">
32384
</div>
<br />
<div id="details"></div>
</body>
</html>
PHP
<?php
header('Access-Control-Allow-Origin: *');
if (isset($_POST['text'])){
$q = addslashes(trim($_POST['text']));
}
// Connection script
$serverName = "***";
$uid = "***";
$pwd = "***";
$connectionInfo = array("UID"=>$uid, "PWD"=>$pwd, "Database"=>"***");
$conn = sqlsrv_connect($serverName, $connectionInfo);
if($conn === false)
{
echo "<error>Connect Failure</error>";
die(print_r(sqlsrv_errors(), true));
}
function checkQuery($theQuery, $theSQL)
{
if($theQuery === false)
{
echo "<error>Query Failure: ".$theSQL."</error>";
die(print_r(sqlsrv_errors(), true));
}
}
// Get the data
$tsql = "SELECT * FROM VG_LD_DS.dbo.VU_LearnAchievePreceda WHERE userID = '".$q."'";
$stmt = sqlsrv_query($conn, $tsql);
checkQuery($stmt, $tsql);
$i = 0;
while($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC))
{
if($i == 0)
{
$names = array($row);
}
else
{
array_push($names, $row);
}
$i = 1;
}
header('Access-Control-Allow-Origin: *');
foreach ($names as $name) {
echo $name['telstraID'];
}
?>
這東西是相當新的給我,所以任何意見或建議被讚賞。
謝謝:)
無法看到任何代碼會導致同源違規......您確定您的ajax請求沒有在某個地方被重定向到異地嗎? –
是的,這很抱歉,我想我的代碼並不清楚。data.php被託管在具有ajax請求的頁面的不同內部服務器上。 – user1443449
這可以使用JSONP或'CURL' – diEcho