2016-01-30 154 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中使用头文件。也许我在客户端做了一些错误的事情。但它现在正在工作:)