gpt4 book ai didi

jquery - 跨域 jQuery $.ajax 请求 PUT 失败(Access-Control-Allow-Methods 不允许方法 PUT。)

转载 作者:行者123 更新时间:2023-12-03 22:30:28 25 4
gpt4 key购买 nike

我正在通过 jQuery 的 $.ajax 执行跨域请求来访问 RESTful PHP API。
为此,我在 PHP 中设置了以下 header :

header("HTTP/1.1 $code $status");
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST, PUT');

使用类型 GETPOST 可以正常工作。但是,当我执行 PUT ajax 调用时,Firefox 完全失败,并在 Firebug 的网络选项卡中显示 OPTIONS api.php
在 Chrome 中,同样的事情首先发生(OPTION 请求失败,并显示消息 Method PUT is not allowed by Access-Control-Allow-Methods.),但 Chrome 会跟进实际的 PUT 请求那确实有效。

此行为的原因是什么?

最佳答案

显然,浏览器首先发送 OPTIONS 请求来查明是否允许 PUT(或 DELETE)请求。
由于我不允许 Access-Control-Allow-Methods 中的 OPTIONS 方法失败,因此在 Firefox 中的 PUT 请求也失败了。< br/>将 OPTIONS 添加到 Access-Control-Allow-Methods 解决了问题:

header('Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS');

关于jquery - 跨域 jQuery $.ajax 请求 PUT 失败(Access-Control-Allow-Methods 不允许方法 PUT。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17702220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com