首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel 5和奇怪的虫子:背上的花括号

Laravel 5和奇怪的虫子:背上的花括号
EN

Stack Overflow用户
提问于 2016-05-31 22:08:43
回答 1查看 327关注 0票数 5

每当我在我的Laravel网站上回顾历史时,我看到的反应是:

代码语言:javascript
复制
{}

当我向前走到我之前的位置时,它也显示了这些牙套。

如果我在Chrome中启动带有禁用缓存选项的开发工具,问题就不会发生。返回内容的Content-Type确实是application/json。在Firefox中没有这样的问题。

发生这种事是因为我的一个中间人。我编写了AjaxJson中间件,将所有Ajax请求转换为JSON响应。奇怪的是,当我回顾历史时,Google提出了这个请求-- Ajax。它包含以下标题:

X-Requested With: XMLHttpRequest

因此,$request->ajax()返回true

这是我的中间件:

代码语言:javascript
复制
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Response;

class AjaxJson
{
    /**
     * 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->ajax()) {
            return $response;
        }

        if (!$response instanceof Response) {
            return $response;
        }

        return response()->json($response->getOriginalContent(), $response->status());
    }
}

我做错了什么?

更新

我发现了关于no-store响应头的Cache-Control值。它防止Chrome在单击“后退”按钮时使用缓存。我创建了一个中间件来像这样设置Cache-Control

缓存-控制:私有,最大年龄=0,无缓存,无存储

如果你们知道更好的解决这个问题的方法,请告诉我。

EN

回答 1

Stack Overflow用户

发布于 2016-09-07 14:23:02

试着在验证后处理请求:

代码语言:javascript
复制
public function handle($request, Closure $next)
{
    if ($request->ajax()) {
        return response()->json($response->getOriginalContent(), $response->status());
    }

    return $next($request);        
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37556431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档