【发布时间】:2018-08-10 15:37:41
【问题描述】:
我在一个名为 backend.example.com 的子域上使用 laravel 编写了一个 API。如果我尝试从另一个名为 partner.example.com 的子域从我的 API 获取信息,我可以毫无问题地验证自己并获取这些信息。这是 Ajax 请求:
但是,如果我尝试对名为 example.com 的主域执行完全相同的操作,则会收到此错误:
无法加载https://backend.example.com/api/v1/leads/showAdmin: 对预检请求的响应未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。 Origin 'https://example.com' 因此不允许访问。
这是主域的 Ajax:
var ajaxArray = {
"fromDate": from,
"toDate": to
};
console.log(ajaxArray);
jQuery.ajax({
url: ("https://backend.example.com/api/v1/leads/showAdmin"),
type: "POST",
data: ajaxArray,
crossDomain: true,
headers : {
"Authorization": "Basic " + btoa("api@example.com" + ":" + "123456"),
"Accept": "application/json"
},
error: function() { alert("Error"); },
success: function(result){
alert("Working");
});
}});
这是我来自 wokring 子域的 Ajax 请求:
var ajaxArray = {
"fromDate": from,
"toDate": to,
"table": "no",
"userID": 20
};
console.log(ajaxArray);
jQuery.ajax({
url: ("https://backend.example.com/api/v1/leads/show"),
type: "POST",
data: ajaxArray,
crossDomain: true,
headers : {
"Authorization": "Basic " + btoa("api@example.com" + ":" + "123456"),
"Accept": "application/json"
},
error: function() { alert("No"); },
success: function(result){
alert("Working");
});
}});
但我不明白,因为我已经允许所有...... 见这里:
<?php
return [
/*
|--------------------------------------------------------------------------
| Laravel CORS
|--------------------------------------------------------------------------
|
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
| to accept any value.
|
*/
'supportsCredentials' => false,
'allowedOrigins' => ['*'],
'allowedOriginsPatterns' => [],
'allowedHeaders' => ['*'],
'allowedMethods' => ['*'],
'exposedHeaders' => [],
'maxAge' => 0,
];
不胜感激任何形式的帮助! 亲切的问候
【问题讨论】:
标签: php ajax laravel-5 cors cross-domain