POST请求跨域和拒绝访问 2021-01-16 15:41:25

第三方服务器解决方案:

419:涉嫌跨域

修改Middleware/VerifyCsrfToken.php文件

protected $except = [
    'xxx/*',
    'xxx/*'
];

以上代码的含义是,开放以某某字符开头的接口,比如开放abc/*,就等于开放了www.123.com/abc接口,或者www.123.com/abc/xxx接口。

此时,如果安装laravel-cors并曾生成配置文件,会报403错误。

403:拒绝访问

前往config/cors.php,修改配置文件,为指定域名开放访问权限

return [

    /*
    |--------------------------------------------------------------------------
    | Laravel CORS
    |--------------------------------------------------------------------------
    |
    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
    | to accept any value.
    |
    */
   
    'supportsCredentials' => false,
    'allowedOrigins' => ['http://www.abc.com'],
    'allowedOriginsPatterns' => [],
    'allowedHeaders' => ['*'],
    'allowedMethods' => ['*'],
    'exposedHeaders' => [],
    'maxAge' => 0,

];

laravel-cors生成配置文件的命令

首先,通过命令行进入应用目录,然后输入以下代码:

php artisan vendor:publish --provider="Barryvdh\Cors\ServiceProvider"

如果报错,比如php命令不存在,则添加path即可。linux宝塔下,可能会报某某函数被禁用错误,那么前往php设置中,将被禁用的函数打开即可。

本地服务器解决方案:

常见于blade模板与控制器的交互,提交请求时,忘记传入csrf-token。

使用form时,在form区块内添加:

{{csrf_field()}}

使用ajax时,可添加如下代码:

// script标签内任意位置
$.ajaxSetup({
        headers:{'X-CSRF-TOKEN':'{{ csrf_token() }}'}
});
// ajax内
$.ajax({
        headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        url: '',
        data: {}
});

 

  1. Laravel5.7
  2. 微信相关
  3. Mysql
  4. 前端开发
  5. 随记
  6. 写作素材
  7. 开发工具
  8. 互联网