gpt4 book ai didi

php - Slim 框架上 CORS 期间的预检授权 header

转载 作者:搜寻专家 更新时间:2023-10-31 21:23:03 25 4
gpt4 key购买 nike

现在我遇到了 CORS(跨源资源共享)问题,尤其是在尝试向 slim api 发送授权时。我试图删除 jquery 上的授权 header ,它就像一个魅力!但我需要授权才能传递 api key ,我不知道如何绕过预检模式(选项)。这是 javascript 代码。

$.ajax({
type:'GET',
url:baseApi+'/code/account',
crossDomain:true,
xhrFields:{
withCredentials:true
},
beforeSend:function(xhr){
$overlay.css('display','block');
xhr.setRequestHeader("Authorization",boot._header);
},
complete:function(xhr){
// complete scope
}
});

在 slim 框架上,我已将 Access-Control-Allow-Origin 设置为白名单来源域 (www.example.com)。这是完整的配置

if (isset($_SERVER['HTTP_ORIGIN'])) {
if($_SERVER['HTTP_ORIGIN'] == "http://www.example.com"){
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
}
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Max-Age: 86400'); // cache for 1 day
}

if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");

if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
header("Access-Control-Allow-Headers: Authorization, authorization, Content-Type");
}

完整的请求头和响应头

响应 header

HTTP/1.1 404 Not Found
Date: Tue, 14 Feb 2017 14:44:34 GMT
Server: Apache/2.4.23 (Unix) OpenSSL/1.0.2h PHP/5.6.24 mod_perl/2.0.8-dev Perl/v5.16.3
X-Powered-By: PHP/5.6.24
Access-Control-Allow-Origin: http://www.example.com
Access-Control-Allow-Credentials: true
Access-Control-Max-Age: 86400
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Authorization, authorization
Content-Length: 514
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html;charset=UTF-8

请求 header

OPTIONS /code/account HTTP/1.1
Host: api.example.com
Connection: keep-alive
Access-Control-Request-Method: GET
Origin: http://www.example.com
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Access-Control-Request-Headers: authorization
Referer: http://www.example.com/account/payout
Accept-Encoding: gzip, deflate, sdch
Accept-Language: en-US,en;q=0.8,id;q=0.6,ms;q=0.4
Accept: */*

我已经尝试过其他人可能的解决方案,但没有机会解决这个问题。总是显示 404,调用了 OPTIONS 方法,而不是它应该的 GET 方法。

最佳答案

经过研究和调查,我最终按照@Mika Tuupola 的建议为 Slim 使用了 CORS 中间件。但是因为我使用的是 Slim v2,所以这个 repo https://github.com/palanik/CorsSlim适合我。如果您使用的是 Slim v3,请使用此存储库 https://github.com/tuupola/cors-middleware正如我们的救世主所创造的。希望对您有所帮助!

关于php - Slim 框架上 CORS 期间的预检授权 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42229499/

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