我想在X-Frame-Options中添加多个域,因为我必须授权facebook和messenger。
我尝试了很多东西,例如......
我创建了一个中间件:
<?php
namespace App\Http\Middleware;
use Closure;
class FrameHeadersMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('X-Frame-Options', 'ALLOW FROM https://www.messenger.com/');
$response->header('X-Frame-Options', 'ALLOW FROM https://www.facebook.com/');
return $response;
}
}
但只添加了facebook ...
编辑:我使用http referer:
<?php
namespace App\Http\Middleware;
use Closure;
use Request;
class FrameHeadersMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
$response = $next($request);
if(Request::server('HTTP_REFERER') === 'www.messenger.com'){
$response->header('X-Frame-Options', 'ALLOW FROM https://www.messenger.com/');
}
if(Request::server('HTTP_REFERER') === 'www.facebook.com'){
$response->header('X-Frame-Options', 'ALLOW FROM https://www.facebook.com/');
}
return $response;
}
}
答案 0 :(得分:1)
您不能同时拥有多个X-Frame-Options
标头。
2.3.2.3。 ALLOW-FROM的使用设计模式和示例场景 参数
作为&#34;允许来自&#34;字段仅支持一个序列化原点,在 服务器希望允许多个资源进行构建的情况 其内容,以下设计模式可以满足这一需求:
要在框架中呈现所请求内容的页面 将自己的原始信息提供给提供的服务器 要通过查询字符串参数构建的内容。
服务器验证主机名是否符合其条件,以便 允许页面由目标资源构成。这个 例如,可以通过查找受信任的白名单来实现 允许构建页面的域名。例如, 对于Facebook&#34;喜欢&#34;按钮,服务器可以检查看到 提供的主机名与预期的主机名匹配 &#34;像&#34;按钮。
服务器在&#34; X-Frame-Options:ALLOW-FROM&#34;中返回主机名。 如果在步骤#2中符合适当的标准。
- 醇>
浏览器强制执行&#34; X-Frame-Options:ALLOW-FROM&#34;报头中。