gpt4 book ai didi

php - 获取请求在 postman 中工作但在浏览器中不起作用

转载 作者:太空狗 更新时间:2023-10-29 17:03:13 26 4
gpt4 key购买 nike

我的 Web 应用程序在客户端使用 Angular7,在 Api 中使用 CakePHP我使用的是 Basic Authentication 然后我将其替换为 Token Authentication 所有请求都工作正常,除了一个只在 Postman 中工作正常但在浏览器中它是很奇怪,因为似乎身份验证存在问题但不知道原因。

请求应该返回一个 blob 来下载文件,所以我在 CakePHP 中使用 FPDI 来返回 pdf

这是 postman 的请求

postman 标题

Date →Wed, 15 May 2019 12:02:44 GMT
Server →Apache/2.4.33 (Win32) OpenSSL/1.0.2n PHP/5.6.35
X-Powered-By →PHP/5.6.35
Content-Disposition →inline; filename="doc.pdf"
Cache-Control →private, max-age=0, must-revalidate
Pragma →public
Access-Control-Allow-Origin →*
Keep-Alive →timeout=5, max=100
Connection →Keep-Alive
Transfer-Encoding →chunked
Content-Type →application/pdf

Postman 正文 Postman Body在 Chrome 上请求 Request on Chrome使用基本身份验证的工作请求 Working request using Basic Auth使用 FireFox

using FireFox

调用请求

    getWorkListPdf(id: number, cem_id?: number) {
let uri = `${this.workSessionsUrl}workList/${id}`;
let params = new HttpParams();
if (cem_id) {
params = params.set('cemetery_id', cem_id.toString());
}
const Auth = localStorage.getItem("AuthenticationToken");
let header = new HttpHeaders();
header = header.append("AuthenticationToken", Auth);
return this.dataService.get(uri,{ headers: header, params: params, responseType: 'arraybuffer' })
.pipe(
map(res => {
return res;
}
)
);
}

非常感谢任何帮助!

最佳答案

问题是 Api 无法识别包含身份验证所需 header 信息的请求,我在 AppController 中添加了 Authentication 数组> 允许在接收 json 请求时同时使用 Basic AuthToken Auth,这适用于除此请求之外的所有请求(下载 pdf)我尝试添加

$this->Auth->authenticate['Token'] = array(
'fields' => array(
),
// 'parameter' => '_token',
'header' => 'AuthenticationToken',
'scope' => array(
'User.permission_api_login' => true
)
);

再次在 Controller 中,它工作正常!!看来它现在可以识别Token并返回一个有效的文件!

关于php - 获取请求在 postman 中工作但在浏览器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148853/

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