gpt4 book ai didi

apache - apache 的 'Access-Control-Allow-Origin' header

转载 作者:行者123 更新时间:2023-12-02 08:09:06 25 4
gpt4 key购买 nike

https://api.aonesalons.com/dbsynch/webocitysalonpos/

当我从 POSTMAN 向上述 URL 发送请求时,它工作正常。

但是,当通过我的角度应用程序发送时,在 demo.aonesalons.com 上运行,

我得到:

Failed to load https://api.aonesalons.com/dbsynch/webocitysalonpos/: The 'Access-Control-Allow-Origin' header contains multiple values '*, https://demo.aonesalons.com', but only one is allowed. Origin 'https://demo.aonesalons.com' is therefore not allowed access.

如果我直接打https://api.aonesalons.com/dbsynch/webocitysalonpos/in浏览器,有效。但是,当从 demo.aonesalons.com 上运行的角度应用程序访问相同的 url 时,它会抛出多个 CORS header 错误

在 Angular 应用程序中或直接在浏览器中点击它,我看到此请求的响应是 200,响应如下:

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:*
Access-Control-Allow-Origin:*
Access-Control-Allow-Origin:https://demo.aonesalons.com
Access-Control-Expose-Headers:Cache-Control, Content-Type, Server
Cache-Control:must-revalidate, max-age=172800
Connection:close
Content-Length:240
Content-Type:application/json
Date:Sun, 25 Feb 2018 05:02:27 GMT
Expires:Tue, 27 Feb 2018 05:02:27 GMT
Server:CouchDB/1.6.1 (Erlang OTP/R14B04)

当我通过 postman 打它时,

access-control-allow-headers →*
access-control-allow-origin →*
cache-control →must-revalidate, max-age=172800
connection →close
content-length →240
content-type →text/plain; charset=utf-8
date →Sun, 25 Feb 2018 05:11:50 GMT
expires →Tue, 27 Feb 2018 05:11:50 GMT
server →CouchDB/1.6.1 (Erlang OTP/R14B04)

我所有的请求都通过 apache 服务器代理

访问控制允许来源:*

但是

在提出*之前,我有

#SetEnvIf Origin ^(https?://(?:.+\.)?aonesalons\.com(?::\d{1,5})?)$   CORS_ALLOW_ORIGIN=$1
#Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN

现在,

将其切换为 后,所有响应 header 都具有 Access-Control-Allow-Origin: 除了对 couchdb 的请求。我不确定它是从哪里挑选的。

这是我的 ssl.conf 的样子:

Header always set Access-Control-Allow-Headers "*"
Header always set Access-Control-Allow-Origin "*"

<VirtualHost *:443>
ServerName api.aonesalons.com
SSLEngine on
SSLCertificateFile /home/user/abc.crt
SSLCertificateKeyFile /home/user/bcf.key

ProxyPreserveHost On
ProxyRequests Off
ProxyPass /dbsynch http://0.0.0.0:5984/
ProxyPassReverse /dbsynch http://0.0.0.0:5984/
ProxyPass / http://localhost:9999/
ProxyPassReverse / http://localhost:9999/
</VirtualHost>

最佳答案

如错误信息中所述:

The 'Access-Control-Allow-Origin' header contains multiple values '*, https://demo.aonesalons.com', but only one is allowed

在一个 HTTP 响应中只允许一个 Access-Control-Allow-Origin 条目。现在,由于您正在使用 ProxyPass,目标应用程序很可能会为 Access-Control-Allow-Origin 创建自己的 header 条目,您的 Apache 服务器会转发该 header 条目 -除此之外,它还添加了包含 * 的条目,因为您在配置中指定了它。

所以我想在你的 Angular 应用程序中你有类似 .header("Access-Control-Allow-Origin","(something)"); 的东西;如果删除它,您的应用程序应该可以通过 Apache 服务器访问。

或者,您可以在您的 Apache 配置中删除条目 Header always set Access-Control-Allow-Origin "*" 并以设置正确 header 的方式更改您的 Angular 应用程序。

关于apache - apache 的 'Access-Control-Allow-Origin' header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48766156/

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