我采取了分离Api和Web应用程序的路线。但是,跨站点请求的问题仍然存在。此编辑下面的问题现在有点无关紧要了,除了跨站点请求问题仍然存在。我将在下面留下问题以供参考,也许可以帮助其他人决定在这种情况下该做什么。
我最近开始研究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的新手,我觉得我没有在这里得到一些东西,所以任何帮助都会非常感激。
实际上有一个非常类似的问题可以解决同样的问题,可以在这里找到:
但是我认为跨站点请求问题不是提问者的问题,因为他的API是从同一个域提供的。