我好久不见了,终于报到了。 我经历了大量的线程,但没有人可以帮我解决我的问题。 我即将使用php中的slim框架创建一个RESTful API,并且在跨域放置请求方面存在问题。
让我快速介绍一下我所做的事情。 在考虑了第一个GET请求后,我正在寻找一种方法来轻松测试我的API,并找到了“RESTClient”Firefox插件,它运行良好,所以我继续使用它。 经过几次测试后,我在另一台服务器上测试了一个自编代码,并且出现了问题。
阻止跨源请求:同源策略禁止读取%1 $ S处的远程资源。 (原因:CORS预检频道没有成功)。
我最想知道的是, Firefox插件在任何时候都没有问题,它始终显示预期的响应。当我尝试通过自己的代码发送请求时,上面的错误就发生了。我读了很多关于跨源请求的内容,但没有任何帮助,我希望你能。
现在首先让我向您展示我的超薄框架PHP代码
<?php
header('access-control-allow-origin: *');
header('Content-Type: application/json');
function output($arr){
echo json_encode($arr);
exit;
}
require 'Slim/Slim.php';
\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->put(
'/put',
function () {
$output = array("status"=>"200","message"=>"This is a put test");
output($output);
}
);
$app->run();
?>
我的test.html
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
(function($) {
var url = 'URL';
$.ajax({
type: 'put',
url: url,
async: false,
crossDomain:true,
dataType: 'json',
success: function(json) {
console.log(json);
},
error: function(e) {
console.log(e.message);
}
});
})(jQuery);
</script>
</body>
</html>
有人可以向我解释如何让这个PUT请求正常工作。我现在真的处于这种绝望的情绪中。我理解所有跨域主题,但为什么在我在php代码中设置access-control-allow-origin之后他不放手?什么是firefox插件做的不同? ......
答案 0 :(得分:1)
您似乎忘了在标题中添加方法。1
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');