我试图将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.com或https://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>