我的所有DELETE和PUT请求都被阻止(405)。我已经尝试在前后过滤器中添加标题:
App::before(function($request)
{
header('Access-Control-Allow-Origin', '*');
header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');
header('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Request-With');
header('Access-Control-Allow-Credentials', 'true');
});
App::after(function($request, $response)
{
$response->headers->set('Access-Control-Allow-Origin', '*');
$response->headers->set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
$response->headers->set('Access-Control-Allow-Headers', 'Origin, Content-Type, Accept, Authorization, X-Requested-With');
$response->headers->set('Access-Control-Allow-Credentials', 'true');
$response->headers->set('Access-Control-Max-Age','86400');
return $response;
});
我尝试添加.htaccess规则以允许它们在laravel公用文件夹中:
<Limit GET POST PUT DELETE HEAD OPTIONS>
Order allow,deny
# You might want something a little more secure here, this is a dev setup
Allow from all
</Limit>
<LimitExcept POST PUT DELETE HEAD OPTIONS>
Order deny,allow
Deny from all
</LimitExcept>
我已尝试在资源控制器中使用构造函数,似乎没有任何实际允许任何请求类型。我在这里很快就没有想法了,我正在使用apache和kendo UI来制作AJAX请求。我的路线看起来像:
// PUBLIC
Route::group(array('prefix' => 'api/v1'), function()
{
Route::post('login', array('uses'=>'UsersController@login'));
Route::get('status', array('uses'=>'UsersController@status'));
});
// PROTECTED BY SENTRY
Route::group(array('prefix' => 'api/v1', 'before' => 'auth'), function()
{
Route::get('logout', array('uses'=>'UsersController@logout'));
Route::get('users/whoami', array('uses'=>'UsersController@whoami'));
Route::resource('users', 'UsersController');
Route::resource('programs', 'ProgramsController'); // THIS ROUTE KEEPS 405'ING ME
});
过滤器文件中没有任何东西太过花哨,仅使用Sentry2进行用户管理。任何帮助将不胜感激!
答案 0 :(得分:3)
没关系,这是一个证明如果你已经疲惫不堪而要提前一个漫长的夜晚的证明。
基本上,您需要密切关注控制台,以确保您实际上正在击中正确的端点。例如:
1)删除localhost / project
与
2)删除localhost / project / api / v1 / endpoint / IDofItem
在第一个实例中,您将获得一个不允许的405方法,这使得看起来似乎不允许使用DELETE,但实际上它表示没有对应于项目基础的控制器方法。
早上新鲜后2分钟内找到答案(再次学习.....)