[英]RESTful api - cross domain put request issue
我是一个漫长的时间溢出者,并最终注册。 我经历了很多线程,但是没有一个可以帮助我解决我的问题。 我将使用php中的苗条框架创建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插件有什么不同? ...
似乎您忘记在标头中添加方法。 1个
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.