2012-08-01 70 views
-1

我有這個問題的問題:訪問控制允許來源。訪問控制允許源服務器端由php

我讀到它,我發現這是可能使用PHP來獲得響應,here

但我不知道如何去適應這些代碼的JavaScript,我仍然有同樣的問題。

我在JavaScript嘗試這樣做:

var url ='http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter'; 
req=Ajax("getResponse.php/?" + url) 
    if (req.status=200) 
alert("hi"); 

而且對php文件:

<?php 
echo file_get_contents($_GET['url']); 
?> 

並沒有什麼happends。我試圖與阿賈克斯,是這樣的:

$.ajax({ 
      url: "http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter", 
      async: false, 
      dataType: 'html', 
      success: function (text) { 
      alert(text); 
      } 
     }); 

但總是同樣的問題....

我看有同樣的問題互聯網上的人很多,但沒有一個得到迴應。我剛剛發現了兩種方法,使用chrome和一個選項,但只是爲開發人員推薦並在服務器上添加標題,但我不知道在哪裏添加它們。我使用Apache Tomcat catalina作爲本地主機。我有2臺服務器,網頁(在XAMPP)和休息(在Tomcat中)

+0

你在哪裏設置'Access-Control-Allow-Origin',你需要它在哪裏? – Musa 2012-08-01 10:14:02

回答

1

變化

req=Ajax("getResponse.php/?" + url)

req=Ajax("getResponse.php/?url=" + url)

裸記住,這是不安全的,我能通過任何到url參數和你的php腳本都會使用它。讓人們從本地系統讀取文件,以及讓你的PHP腳本從其他地方

編輯下載惡意文件:

要確保它是使用操作列表中最好的方式,這意味着用戶永遠不會看到網址,只能修改一個動作詞。例如

req=Ajax("getResponse.php/?do=getOrders")

然後在PHP

$actions = array(); 
$actions['getOrders'] = "http://localhost:8080/com.webserver/rest/manage/order?parameter=parameter"; 

if(array_key_exists($_GET['do'], $actions)) 
echo file_get_contents($actions[$_GET['do']]); 

通常你會想要做更多的只是轉換一個動作一個網址,你可能想傳遞額外的參數。在這種情況下,您可以使用一個開關或一堆IF來檢查$ _GET ['do']是否等於某個值,然後對其進行處理。但是需要幾個小時才能給出每種可能的實現方法的示例,因此您可能需要使用google。

請注意:雖然此方法建議爲您的腳本增加100倍的安全性,但它不可信,特別是如果您也開始傳遞用戶參數。再次使用谷歌。

+0

上帝......現在它給了我一個關於Ajax的錯誤沒有定義....有沒有辦法讓它安全?我可以更改服務器中的所有參數...只是允許一些地址或類似的東西。 – user1298272 2012-08-01 10:35:05

+0

Ajax未定義可能是因爲您沒有包含實現該對象/函數的庫。就我個人而言,我堅持使用jQuery,但是如果你已經在該庫下做了很多代碼,或者jQuery不合適,你必須堅持下去。 我將添加一個編輯到我的文章如何保護它 – Lee 2012-08-01 10:38:00

+0

隨着jquery,這將是我寫的上,不是嗎? $ .ajax ....現在它正在工作,非常感謝!我收到我想要的。 – user1298272 2012-08-01 10:40:18