2016-01-30 156 views
1

我有一個PHP腳本,它從請求中獲取一個POST變量,對它執行某些操作(在這種情況下,它是對特定鍵的memcached請求)並通過JSON將其發回。PHP跨域請求被阻止

複雜的部分是,我不會在與執行請求的腳本相同的服務器上託管此腳本。所以我嘗試使用CORS。我的瀏覽器告訴我,我沒有設置Access-Control-Allow-Origin-Header,但我的確如你所見。所以我想我錯了。但是我沒有真正處理PHP中的頭文件,所以我完全不知道該怎麼做。我已經搜索(也在Stackoverflow),但我發現的是,我必須設置此標題,我做了什麼...

ourse memcache部分是不是真的有趣的解決問題,但我認爲它會更好,讓你們看看完整的代碼,所以在這裏你去:

<?php 
header("Access-Control-Allow-Origin: * "); 
$key = $_POST["key"]; 
$json = ""; 
if($key != "") 
{ 

    define('MEMCACHED_HOST', '127.0.0.1'); 
    define('MEMCACHED_PORT', '11211'); 
    $memcache = new Memcache; 
    $memcache->connect(MEMCACHED_HOST, MEMCACHED_PORT); 

    $value = memcache->get($key); 

    $json_array = array("status" => "done" , "key" => $key, "value" => $value); 
    $json = json_encode($json_array); 
} 
else 
{ 
    $json_array = array("status" => "empty"); 
    $json = json_encode($json_array); 

} 
echo $json; 
?> 
+0

您必須在您的POST變量最初來自的服務器上設置該標頭。 –

+0

看起來您已正確設置標題以允許所有主機。檢索此JSON的腳本是什麼樣的? –

+1

關於'$ key'的安全提示 - 您應該根據可接受的值列表來檢查輸入。否則,客戶可能通過猜測密鑰來查詢memcached中的任何可訪問值。 –

回答

0

插入一些行到Apache .conf文件做到了。如果有人感興趣,可以找到這些行here。我仍然不知道爲什麼它不能在PHP中使用頭文件。也許我在客戶端做了一些錯誤的事情。但它現在正在工作:)