Wordpress或PHP中的某些东西重写了我的access-control-allow-origin头设置



我试图将access-control-allow-origin设置为"*"从Wordpress插件(我开发的,参见:wp-nostr-nip05)获得Nostr NIP-05身份验证

当我用我的NIP-05 id和Apache(或Nginx)设置硬编码nostr.json

access-control-allow-origin: '*'

一切正常

现在,当我使用插件时,nostr.json不再是一个平面文件,它是一个PHP脚本,/.well-known/目录启用了force-type。这样,文件就可以从users表中选择合适的NIP-05 id,键入HTTP_HOST和登录名。

访问https://example.comhttps://example.com/.well-known只在访问

时产生预期的报头。https://example.com/.well-known/nostr.json

access-control-allow-origin设置为:

access-control-allow-methods: POST, GET, OPTIONS
access-control-allow-origin: https://example.com, *
access-control-max-age: 1728000

而不是:

access-control-allow-origin: *

我认为这会导致NIP-05验证失败。

我一直在寻找access-control-allow-origin可能是由Wordpress显式设置的,并且发现:

./httpdocs/wp-includes/rest-api.php
./httpdocs/wp-includes/http.php

并注释掉:

header( 'Access-Control-Allow-Origin: ' . $origin );
header( 'Access-Control-Allow-Credentials: true' );

但这似乎没有得到它。

还安装了一个wordpress插件来显式设置wordpress的标题,不改变任何东西

甚至尝试从nost .json发送原始数据

Header("Access-Control-Allow-Origin: *");

无效

我现在正式没有主意了。

理想情况下,我希望能够设置"*"在/中。众所周知的/目录,但我需要先让这个工作

(更新提示的评论:没有。htaccess覆盖这一点,理想情况下,我会通过htaccess做这一切,但似乎没有采取这台服务器。)

更新#2:另一件令人恼火的事情是,我从诊断工具那里得到了不同的反应,比如:

https://cors-test.codehappy.dev/

现在显示的是:

access-control-allow-methods: POST, GET, OPTIONS
access-control-allow-origin: https://example.com, *
access-control-max-age: 1728000

并从命令行运行类似wget的命令:

$ wget --no-cache --server-response https://example.com/.well-known/nostr.json
HTTP/1.1 200 OK
Server: nginx
Date: Tue, 11 Apr 2023 15:23:55 GMT
Content-Type: text/plain; charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
cache-control: public, max-age=2592000
display: staticcontent_sol
vary: Accept-Encoding,Origin
x-middleton-display: staticcontent_sol
x-powered-by: PHP/8.2.4
x-sol: pub_site
Access-Control-Allow-Origin: *
X-Cache-Status: BYPASS
X-Powered-By: PleskLin

但是NIP-05验证似乎仍然在多个客户端上失败。忍者和Damus),但正在开发一个(snort.social)

可以在。htaccess

中指定
<FilesMatch "/.well-known/nostr.json">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>

或者你可以尝试在知名文件夹中创建一个新的。htaccess文件,并添加以下内容:

<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>

最新更新