在开发过程中,服务器返回JSON.但在生产中,它不返回JSON.我发现在生产中,浏览器不发送X-Requested-With标头.

In development-请注意X-Requested-With标题

enter image description here

In production-没有X-Requested-With标头

enter image description here

Question

如何确保浏览器始终发送X-Requested-With标头?

请让我知道任何需要考虑的方向/ idea .

Notes

  • 带有Metronic主题的Laravel应用程序
  • 生产Fargate实例位于AWS ALB之后
  • 在开发中,我使用一个容器(在这里它工作/返回JSON)

What I have found so far

  • 这与CORS(跨域资源共享)无关,因为这都是相同的/单一的来源.
  • 如果我使用Requestly(https://requestly.com/)添加X-Requested-With标头,它会像预期的那样返回JSON.(但我不能要求所有用户安装Requestly)

在下面的请求中,第一个请求不返回JSON.但是,当我使用Requestly添加X-Requested-With个头时,第三个请求返回JSON.

enter image description here

推荐答案

AWS ALB很有可能会放弃X-Requested-With标头,因为它是一个非标准标头.

您可以创建一个将头添加到传入请求的中间件,例如:

class EnsureThatXRequestedWithHeaderExists
{
    /**
     * Handle an incoming request.
     *
     * @param  \Closure(\Illuminate\Http\Request): (\Symfony\Component\HttpFoundation\Response)  $next
     */
    public function handle(Request $request, Closure $next): Response
    {
        $request->headers->set('X-Requested-With', 'XMLHttpRequest');

        return $next($request);
    }
}

但是,由于您正在寻求JSON响应,我认为更好的方法是从您的API端点内部返回JSON响应.这可以使用json()方法来完成,如下所示:

return response->json($data);

这样,您根本不需要依赖X-Requested-With标头.

Json相关问答推荐

Google Page to JSON应用程序脚本出现CORS错误

JSON字符串处理注入引号

419(未知状态)使用laravel处理PUT请求

如何使用 JOLT 使用输入数组中的值和层次 struct 中的其他字段创建数组

jq - 仅在键值对存在的地方打印值

在这种情况下我如何实现 UnmarshalJSON 并且只为一个接口字段定义特殊行为?

如何从 JSON 中获取数据并通过 vb6 在网格中显示

从 json 数组中仅提取一个值导致 vb6

如何在 Node.js 中解析包含NaN的 JSON 字符串

如何对使用转换器的 Grails 服务进行单元测试?

单元测试球衣 Restful Services

SyntaxError:Object.parse(本机)AngularJS中的意外标记o

在 Apache Spark 中读取多行 JSON

Android 上的 JSON - 序列化

在 JSON 字符串中react i18n 换行符

Java的JSON字符串整洁/格式化程序

什么是类型和类型令牌?

ASP.NET MVC:使用 JsonResult 控制属性名称的序列化

Spring MVC:不反序列化 JSON 请求正文

如何从 MySQL 中检索 JSON 数据?