WordPress或PHP中的某些内容覆盖了我的访问控制允许源头设置

dddzy1tm  于 2023-04-20  发布在  WordPress
关注(0)|答案(1)|浏览(120)

我试图将我的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.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中的标题,不会改变任何东西
甚至尝试从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)上工作

0x6upsns

0x6upsns1#

您可以尝试在.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>

相关问题