如何解决Angular PHP授权标头API调用失败
我正在使用Angular CLI构建的SPA中处理登录页面功能。我的后端是tomcat,在托管服务器上带有MysqL的PHP,我可以通过httpclient模块成功地连接到该服务器,并通过邮寄获取和更新应用程序中的所有其他内容。我使用代理运行CLI。 应用程序正在localhost:4200上运行
没有授权标头,API调用成功,并且我得到了正确的响应:
{"status":true,"resp":"Login Success."}
登录服务:
const headers = new HttpHeaders({
'Content-Type': 'application/x-www-form-urlencoded','Authorization': 'Basic ' + btoa(email+':'+pwd) <---Including this line gives me error
});
当我在'Authorization':'Basic'+ btoa(email +':'+ pwd)这一行中添加时,API调用本身将失败。它甚至不显示控制台中的OPTIONS / POST。 它在zone.js的某些行上提供(失败)net :: ERR_EMPTY_RESPONSE 。不确定是否存在角度问题。
我在控制台中看到的请求标题:
Provisional headers are shown
Accept: application/json,text/plain,*/*
Authorization: Basic YXNkZjphc2Rm
Content-Type: application/x-www-form-urlencoded
Referer: http://localhost:4200/home
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/81.0.4044.129 Safari/537.36
下面是屏幕快照链接。 enter image description here
/public-html/project/api/login.PHP:
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header ("Access-Control-Allow-Credentials: true");
header("Access-Control-Allow-Headers: Origin,Content-Type,X-Auth-Token,Access-Control-Allow-Headers,Authorization,X-Requested-With");
$json = file_get_contents('PHP://input');
$data = json_decode($json,true);
我也尝试了大多数.htaccess解决方案。什么都没有。
.htaccess(在/ public_html中):
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
//Tried this too
RewriteEngine On
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
Header add Access-Control-Allow-Credentials true
Header add Access-Control-Allow-Methods "GET,POST,PUT,HEAD,OPTIONS,DELETE,PATCH"
Header add Access-Control-Allow-Headers *
Header always set Access-Control-Expose-Headers "*"
Header add Access-Control-Allow-Origin *
Header set Connection keep-alive
Header set Access-Control-Max-Age "3600"
Header set Access-Control-Allow-Headers "X-Requested-With,Origin,Accept,Client-Security-Token"
当我使用基本身份验证时,相同的请求在邮递员中也有效,我也可以在PHP脚本中打印授权标头。但这在浏览器中不起作用,有什么想法吗? 自2天以来受到打击。无法使它正常工作。 我不想在POST formData中公开用户名/密码,但想在Authorization标头中发送它。我怎样才能使它工作?我应该在子文件夹的某处添加.htaccess吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。