在 PHP 中设置标头
header("Access-Control-Allow-Origin: https://www.example.com");
header("Access-Control-Allow-Headers: Content-Type, Content-Range, Content-Disposition, Content-Description");
Run Code Online (Sandbox Code Playgroud)
标头设置于.htaccess
SetEnvIf Origin ^(https?://.+\.(example|gstatic)\.com(?::\d{1,5})?)$ CORS_ALLOW_ORIGIN=$1
Header append Access-Control-Allow-Origin %{CORS_ALLOW_ORIGIN}e env=CORS_ALLOW_ORIGIN
Header set Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
Header merge Vary "Origin"
Run Code Online (Sandbox Code Playgroud)
我宁愿不编辑该.htaccess文件。PHPheader()函数会覆盖吗?
如果不编辑你的.htaccess,这将会很困难,但是如果你允许自己进行一些小的编辑,你就可以让它工作。
\n\n该指令可以替换、合并或删除 HTTP 响应标头。在内容处理程序和输出过滤器运行后立即修改标头,从而允许修改传出标头。
\n
所以它发生在 PHP(又名内容处理程序)之后。
\n但是,如果我们看一下该选项的语法:
\nHeader [condition] add|append|echo|edit|edit*|merge|set|setifempty|unset|note header [[expr=]value [replacement] [early|env=[!]varname|expr=expression]]\nRun Code Online (Sandbox Code Playgroud)\n我们看到其中一项行动是setifempty。这就是您真正想要使用的。覆盖set该值。setifempty如果尚未设置,则设置该值。
Header setifempty Access-Control-Allow-Headers "origin, x-requested-with, content-type"\nHeader setifempty Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"\nRun Code Online (Sandbox Code Playgroud)\n这是该选项的说明:
\n\n\n\n
setifempty
\n\xc2\xa0 \xc2\xa0 设置请求标头,但前提是不存在具有此名称的先前标头。
笔记:
\n有一个关于使用header_remove()PHP 指令的评论。只有在 PHP 运行时(即Header应用 Apache2 之前)才会发生这种情况。所以这是行不通的。