繁体   English   中英

RESTful API-跨域放置请求问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM