我在AngularJS中创建了一个应用程序,并试图调用Laravel:
我使用Laravel API样板(JWT版)进行API。
但是我在浏览器控制台中得到了这个错误:
XMLHttpRequest无法加载http://localhost:8000/api/auth/login。请求的资源上没有“访问-控制-允许-原产地”标题。因此,“http://localhost:8080”源是不允许访问的。
我试图在api_routes.php中应用cors中间件(barryvdh/laravel),但错误仍然存在。
api_routes.php:
<?php
$api = app('Dingo\Api\Routing\Router');
$api->version('v1', ['middleware' => 'cors'], function ($api) {
$api->post('auth/login', 'App\Api\V1\Controllers\AuthController@login');
$api->post('auth/signup', 'App\Api\V1\Controllers\AuthController@signup');
$api->post('auth/recovery', 'App\Api\V1\Controllers\AuthController@recovery');
$api->post('auth/reset', 'App\Api\V1\Controllers\AuthController@reset');
// example of protected route
$api->get('protected', ['middleware' => ['api.auth'], function () {
return \App\User::all();
}]);
// example of free route
$api->get('free', function() {
return \App\User::all();
});
});
发布于 2016-08-03 17:11:34
我对这个实现完全错了。origin
标头在Laravel中有特定的放置情况,其中其他标头可以在中间件中定义,而origin
报头不能使用。
相反,您需要将其添加到主routes.php
文件的顶部:
header('Access-Control-Allow-Origin: http://localhost:8080');
发布于 2016-08-03 17:33:22
我不完全理解这一点,但是当我想要跨浏览器访问时,我会将一个.htaccess文件添加到我的端点所在的文件夹中,其中包含以下内容:
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
发布于 2016-08-03 17:37:19
您应该添加一个nginx虚拟主机,使用代理通行证指向您的api。本质上,您需要确保您的前端和后端都来自同一个域。
https://stackoverflow.com/questions/38749605
复制相似问题