Laravel跨站点AJAX发布会话。工作但有JavaScript错误?

时间:2017-01-02 13:44:28

标签: javascript ajax laravel cross-domain laravel-5.3

我在维护会话的同时在laravel网站上做了一个跨站点的AJAX帖子。这是客户端网站上的JS和我服务器上的laravel中间件。

客户端js

var formData = new FormData(); 
formData.append('Referer', document.referrer);
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("post", "https://mywebsite.com/record"); 
xmlHttp.withCredentials = true;
xmlHttp.send(formData); 

服务器中间件

public function handle($request, Closure $next)
{
return $next($request)
->header('Access-Control-Allow-Origin',         $request->header('Origin'))
->header('Access-Control-Allow-Credential',     'true')
->header('Access-Control-Allow-Methods',        'GET, POST, PUT, DELETE, OPTIONS');
}

在我迄今为止测试过的3个浏览器中似乎工作得很好但是它确实似乎引发了错误

XMLHttpRequest cannot load https://mywebsite.com/record. Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin 'http://clientwebsite.com' is therefore not allowed access.

这是服务器在fiddler中发回的内容。

Access-Control-Allow-Origin: http://clientwebsite.com
Access-Control-Allow-Credential: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS

两个问题。

问题1

首先,我不明白为什么当我知道它时它的说法不起作用?我可以看到请求进入服务器然后填充我的数据库,我可以看到它们是在fiddler中发送的。

问题2

标题显然有问题,但我不确定是什么?

我可以看到其他人有同样的问题,但我无法理解答案,我尝试将标题更改为" Access-Control-Allow-Credentials = true"

Credentials flag is 'true', but the 'Access-Control-Allow-Credentials

0 个答案:

没有答案