首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Apache代理的哪些更改可能会导致Domoticz API401错误?

Apache代理的哪些更改可能会导致Domoticz API401错误?
EN

Stack Overflow用户
提问于 2019-07-12 00:52:56
回答 1查看 81关注 0票数 0

所以我把我的Domoticz (RPi上的家庭自动化软件)放在一个代理服务器后面,这样就可以从一个外部的HTTPS地址访问它。这在它自己的web界面上工作得很好,但是对于它提供的API来说,有些地方出了问题。

如果我在浏览器中输入以下URL,它将正常工作:

http://localDomoticzIP:port/json.htm?username=MkE=&password=OVM=&type=command&param=getversion

但是,如果我使用HTTPS版本,我会得到一个401错误:

https://myExternalURL.com/domoticz/json.htm?username=MkE=&password=OVM=&type=command&param=getversion

正如您所看到的,没有太多的变化,但一个工作了,一个不工作了。

在Apache中进行从myExternalURL.com/domoticz/localDomoticzIP:port的转换,其配置文件如下所示:

代码语言:javascript
复制
<VirtualHost *:443>
    ServerName myExternalURL.com

    ErrorLog ${APACHE_LOG_DIR}/port_443_error.log
    CustomLog ${APACHE_LOG_DIR}/port_443_access.log combined

    SSLEngine on
    SSLCertificateFile      /etc/letsencrypt/live/myExternalURL.com/cert.pem
    SSLCertificateKeyFile   /etc/letsencrypt/live/myExternalURL.com/privkey.pem

    SSLProxyEngine on
    ProxyPreserveHost On
    ProxyRequests Off
    RewriteEngine on

    # I don't THINK the 3 lines below are important, since it's there for a
        different web page, but I'll leave it in, in case it may mess with
        something me knowing
    # When Upgrade:websocket header is present, redirect to ws
    # Using NC flag (case-insensitive) as some browsers will pass Websocket
    RewriteCond %{HTTP:Upgrade} websocket [NC]
    RewriteCond %{HTTP:Connection} upgrade [NC]
    RewriteRule .* ws://127.0.0.1:8000/socket.io%{REQUEST_URI}  [P]

    RewriteRule ^/domoticz$ /domoticz/ [R=307]

    # The two lines below are for another web page
    RewriteRule ^/sprinklers/node$ /sprinklers/node/ [R=307]
    RewriteRule ^/sprinklers$ /sprinklers/ [R=307]

    ProxyPassMatch      /domoticz\/?(.*)            https://127.0.0.1:444/$1
    ProxyPassReverse    /domoticz\/?(.*)            https://127.0.0.1:444/$1

    # The four lines below are for another web page
    ProxyPassMatch      /sprinklers/node(\/?)(.*)   http://127.0.0.1:8000/$2
    ProxyPassReverse    /sprinklers/node(\/?)(.*)   http://127.0.0.1:8000/$2
    ProxyPassMatch      /sprinklers(\/?)(.*)        http://127.0.0.1:8091/$2
    ProxyPassReverse    /sprinklers(\/?)(.*)        http://127.0.0.1:8091/$2

</VirtualHost>

正如我所说的,在浏览器中转到myExternalURL.com/domoticz/可以很好地工作,但如果我向其添加一个API调用,它总是返回401。

我也尝试过从HTML页面设置authorization头,但结果是相同的: 401。

有没有人知道是什么原因导致了这401个错误?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-15 23:36:09

事实证明,问题不是与当前授权有关,而是与过去的授权有关。我的浏览器不会在您注销时删除sessionID cookie,这会导致在此之后尝试进行身份验证时出现各种问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56994013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档