问题描述
出于开发目的,我配置了我的 Apache Web 服务器来处理来自 Angular 节点服务器或托管在 docker 容器中的 Apache Sling 实例的请求:
Apache 虚拟主机配置:
<VirtualHost admin.my-arcanite.com:80>
ServerName admin.my-arcanite.com
DocumentRoot "/home/tadams/Projects/angular_projects/cms-coffinite"
<Directory "/home/tadams/Projects/angular_projects/cms-coffinite">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
<Directory "/">
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Headers "Origin,X-Requested-With,Content-Type,Accept,Authorization"
Header always set Access-Control-Allow-Methods "POST,GET,PUT,DELETE,PATCH,OPTIONS"
Header always set Access-Control-Expose-Headers "Content-Security-Policy,Location"
ProxyPass /content http://localhost:49174/content
ProxyPass /system http://localhost:49174/system
ProxyPass / http://localhost:4200/
</VirtualHost>
我从禁用主机检查开始的 Angular 服务器。当我现在尝试从 Angular http 客户端调用 Apache Sling 的登录 URL 时,我总是收到 Firefox 中禁止的错误 403:
Object {
headers: {…},status: 403,statusText: "Forbidden",url: "http://admin.my-arcanite.com/system/login/j_security_check",ok: false,name: "HttpErrorResponse",message: "Http failure response for http://admin.my-arcanite.com/system/login/j_security_check: 403 Forbidden",error: null }
const BASE_URL = 'http://admin.my-arcanite.com/system/login/j_security_check';
const headers = new HttpHeaders();
headers.append('Content-Type','application/x-www-form-urlencoded');
const body = new URLSearchParams();
body.append('j_username',username);
body.append('j_password',password);
body.append('j_validate','true');
return this.http.post(BASE_URL,body,{headers,observe: 'response',responseType: 'text'});
我现在不确定这个设置中的错误在哪里,Apache conf。或者我从 Angular 调用它的方式,有人能指出我正确的方向。
如果我确实从 Insomnia rest 客户端向 http://admin.my-arcanite.com/system/login/j_security_check 发送登录帖子,Apache2 的设置似乎可以正常工作,并且登录尝试也会按预期响应 cookie 标头。
在 Angular 中使用 proxy.json 也没有成功,这里已经完全没有提供 cors 预检。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)