我试图将我的access-control-allow-origin设置为“*”,以从Wordpress插件(我开发的插件,请参阅:wp-nostr-nip05)
当我用我的NIP-05 id和Apache(或Nginx)设置硬编码nostr.json
时,access-control-allow-origin: '*'
一切正常。
现在,当我使用插件时,nostr.json
不再是一个平面文件,它是一个为/.well-known/
目录启用了force-type
的PHP脚本。这样,文件可以从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中的标题,不会改变任何东西
甚至尝试从nostr.json内部发送原始文件
Header("Access-Control-Allow-Origin: *");
没有效果。
我现在真的没办法了
理想情况下,我希望能够只在/.well-known/目录中设置“*”,但我需要先让它工作
(评论提示更新:没有.htaccess覆盖它,理想情况下,我会通过htaccess完成这一切,但似乎没有在这个服务器上进行。
更新#2:另一件有点让人抓狂的事情是,我从诊断工具中得到了不同的React,比如:
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验证似乎仍然在多个客户端(astral.ninja和Damus)上失败,但在一个客户端(snort.social)上工作
1条答案
按热度按时间0x6upsns1#
您可以尝试在.htaccess中指定此选项
或者你可以尝试在已知文件夹中创建一个新的.htaccess文件,并添加以下内容: