微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angular PHP授权标头API调用失败

如何解决Angular PHP授权标头API调用失败

我正在使用Angular CLI构建的SPA中处理登录页面功能。我的后端是tomcat,在托管服务器上带有MysqLPHP,我可以通过httpclient模块成功地连接到该服务器,并通过邮寄获取和更新应用程序中的所有其他内容。我使用代理运行CLI。 应用程序正在localhost:4200上运行

没有授权标头,API调用成功,并且我得到了正确的响应:

{"status":true,"resp":"Login Success."} 

来自我的login.PHP文件

登录服务:

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 举报,一经查实,本站将立刻删除。