同一项目中的Api和Web应用程序

时间:2014-12-29 17:20:21

标签: php web-services api laravel-4 cross-domain

编辑:

我采取了分离Api和Web应用程序的路线。但是,跨站点请求的问题仍然存在。此编辑下面的问题现在有点无关紧要了,除了跨站点请求问题仍然存在。我将在下面留下问题以供参考,也许可以帮助其他人决定在这种情况下该做什么。

/ EDIT

我最近开始研究Web应用程序,并且打算开发移动应用程序,我想我想创建一个公共API。以下是我遇到的一些挑战:

API实际上是从子域(api.example.com)提供的,这是一个问题,因为我无法发出跨站点请求。我提出的唯一解决方案是为api.example.com和非API路由添加路由,以便我可以在没有跨站点请求的情况下进行调用,这实际上会引入大量冗余,而不是路由I我想去(没有双关语)。

这是一个设置API路径的小片段(我使用Laravel框架):

Route::group(['domain' => Config::get('globals.API_URL_RAW'), 
              'namespace' => 'MySite\Api\v1', 
              'prefix' => 'v1'], function(){

    Route::post('/register', 'RegistrationController@store');

}

因此,正如您所看到的,我有一些路由可以响应来自api.example.com/v1/register的请求。在Web应用程序中,我使用ajax来访问此API,但由于跨站点请求,对API的访问受到限制。

首选解决方案可能是完全分离网络应用和API,但我如何解决跨网站请求问题呢?

  
    

否'访问控制 - 允许 - 来源'标头出现在请求的资源上。起源' http://example.com'因此不允许访问。

  

此外,如果我要将API与Web应用程序分开,我将不得不在我的Web应用程序中处理JSON(API返回JSON对象),而现在我可以使用实际对象。

我是开发Web apis的新手,我觉得我没有在这里得到一些东西,所以任何帮助都会非常感激。

编辑:

实际上有一个非常类似的问题可以解决同样的问题,可以在这里找到:

  
    

Consuming my own Laravel API

  

但是我认为跨站点请求问题不是提问者的问题,因为他的API是从同一个域提供的。

0 个答案:

没有答案