0

我已经构建了一个 slimPHP REST API。这是我的标题:

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Credentials: true"); 
header('Access-Control-Allow-Headers: origin, content-type, accept');
header('Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE, PUT');
header('Access-Control-Max-Age: 86400'); 

然而,当我尝试跨域 PUT 或 DELETE 请求时,我得到的只是(示例域):

XMLHttpRequest cannot load http://www.example.com/api/x.
Origin http://www.example.com is not allowed by Access-Control-Allow-Origin. 

如果 Access-Control-Allow-Origin 设置为 * ,知道为什么会发生这种情况吗?

4

1 回答 1

1

来自Slim 框架文档

不幸的是,现代浏览器不提供对 HTTP PUT 请求的本机支持。要解决此限制,请确保您的 HTML 表单的方法属性是“post”,然后向您的 HTML 表单添加一个方法覆盖参数,如下所示:

    <form action="/books/1" method="post">
        ... other form fields here...
        <input type="hidden" name="_METHOD" value="PUT"/>
        <input type="submit" value="Update Book"/>
    </form>

如果您使用 Backbone.js 或命令行 HTTP 客户端,您还可以使用 X-HTTP-Method-Override 标头覆盖 HTTP 方法。

您可以使用任何您想要的请求类型(包括自定义请求类型,例如foo),但 GET 和 POST 是现代浏览器原生支持的唯一请求类型。

于 2013-07-26T16:11:14.793 回答