2013-11-22 121 views
1

我试图通过POST请求创建一个用户从我的Laravel 4 API从外部站点。我已经添加以下代码,以我的应用程序/文件filters.php:Laravel 4 API不允许来自外部站点的POST请求

App::before(function($request) 
{ 
    if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') { 

     header('Access-Control-Allow-Origin', 'http://www.myexternalsite.net'); 
     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'); 

     exit; 
    } 
}); 

App::after(function($request, $response) 
{ 
    $response->headers->set('Access-Control-Allow-Origin', 'http://www.myexternalsite.net'); 
    $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; 
}); 

当我在POST请求运行我的开发工具从http://www.myexternalsite.net我得到以下警告消息:

event.returnValue is deprecated. Please use the standard event.preventDefault() instead. main-built.js:6 

和以下错误消息:

OPTIONS http://api.mywebsite.com/users 500 (Internal Server Error) main-built.js:7 
OPTIONS http://api.mywebsite.com/users No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://www.myexternalsite.net' is therefore not allowed access. main-built.js:7 

我错过了什么吗?

回答

0

第一个错误严格是客户端JavaScript错误。错误描述的含义正是它所说的。你应该适当地更新你的js。

第二组错误消息可能与您为JavaScript文件发出跨域请求的事实有关,该文件不受PHP发送的头文件的限制。您需要在网络服务器上为此端点配置CORS

+2

谢谢!对于任何其他与Laravel相关的CORS相关问题,我在这里使用了这个包:https://github.com/barryvdh/laravel-cors来简化这个过程。 –

相关问题