首页 > 解决方案 > 响应中“Access-Control-Allow-Credentials”标头的值为“”,必须为“真”

问题描述

在我的应用程序中,我正在构建一个前端网站(基于 React)并且我使用 PHP 作为我的后端。我不断收到错误:

jquery.js:9600 无法加载http://localhost:81/:响应中的“Access-Control-Allow-Credentials”标头的值为“”,当请求的凭据模式为“时”必须为“真”包括'。因此,不允许访问源“ http://localhost:3000 ”。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

我的 PHP 标头是:

header('Access-Control-Allow-Origin: http://localhost:3000'); 
// header("Access-Control-Allow-Origin: *"); 
header('Content-Type: application/json');
header('Access-Control-Allow-Headers');
header('Access-Contol-Allow-Credentials: true');

我的前端请求如下所示:

$.post(
    {
      async: false,

      type: "POST",
      url:'http://localhost:81',
      data: 
      {
        querytype: "dataRequest"
      },
      crossDomain : true,
      xhrFields: {
          withCredentials: true
      },
      complete: this.completed,
      success: this.reqsuccess,
      error: this.reqError
  });

标签: phpheadercorspackets

解决方案


好吧,您还没有为标题“Access-Control-Allow-Headers”指定值。该值应该是允许的请求标头的逗号分隔列表。标头是可选的,跨站点源请求 (CORS) 不需要。请参阅:https ://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Headers 。


推荐阅读