Laravel 4 响应标头:拒绝基于源域的 ajax 请求

Posted

技术标签:

【中文标题】Laravel 4 响应标头:拒绝基于源域的 ajax 请求【英文标题】:Laravel 4 Response Headers: deny ajax request based on origin domain 【发布时间】:2013-06-04 15:47:13 【问题描述】:

我正在尝试创建一种简单的方法来根据 HTTP 请求的来源域(即基本上是 CORS)来限制对数据的访问。

简要介绍一下背景:(我使用的是最新的 Laravel 4)- 在这个应用程序中,客户在场外使用数据。我想让客户能够根据来源限制 HTTP 请求以访问该数据。这样只有来自他们网站的请求才能通过 API 访问该数据。

即为了争论:假设http://mycustomer.com 上的脚本对http://myapp.com/api/customers_data 进行Ajax 调用——我只想允许来自http://mycustomer.com 的请求,而拒绝所有其他请求。

我目前得到的相关代码:

    // i.e. 'http://mycustomer.com';
    $allow_domain = User::settings->domain;

    $headers = array(
       'Access-Control-Allow-Origin' => $allow_domain,
    );

    return Response::make($JSON_data, 200, $headers);

但这似乎无法拒绝来自其他域的请求。

谁能帮帮我?

【问题讨论】:

【参考方案1】:

已解决:为了回答这个问题,经过数小时的努力,这是经典的“发送标头前的输出”问题。我在记录我的一个实用程序函数时出错,它正在输出前标头。

另外,请注意,如果有人遇到类似问题:允许的域上没有后缀反斜杠。即“http://allow.com/”失败,但“http://allow.com”有效。

【讨论】:

以上是关于Laravel 4 响应标头:拒绝基于源域的 ajax 请求的主要内容,如果未能解决你的问题,请参考以下文章

迁移学习

如何在 PHP (Laravel) 中验证请求的源域

如果验证失败/成功,Laravel 会更改响应标头

我无法在 Angular 4 上向 laravel api 发送带有标头的 http 请求

在 Laravel 5.3 Passport 中添加 Access-Control-Allow-Origin 标头响应

在 Laravel 5 中为非 Ajax 路由设置请求(而非响应)标头