【问题标题】:Cors Ajax request works on subdomain but not on main domainCors Ajax 请求适用于子域但不适用于主域
【发布时间】: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


    【解决方案1】:

    没有插件试过吗?添加标头就足够了,只是为了看看它是否有效,您可以尝试修改路由上的返回响应,即

    use Illuminate\Http\JsonResponse;
    
    Route::get("/whatever", function() {
        $response = new JsonResponse(['arr','ay']);  
        $response->header("Access-Control-Allow-Origin", "http://localhost:3000");
        return $response;
    }
    

    你使用的是哪个版本的 Laravel?

    【讨论】:

      猜你喜欢
      • 2021-07-19
      • 1970-01-01
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 2020-01-07
      • 2018-01-13
      • 2020-10-15
      • 2016-10-17
      相关资源
      最近更新 更多