无法从 react-admin 访问由 rails 开发的 API

Posted

技术标签:

【中文标题】无法从 react-admin 访问由 rails 开发的 API【英文标题】:Can't access API developed by rails from react-admin 【发布时间】:2018-11-23 16:49:28 【问题描述】:

在 rails 应用程序中,使用此文件:

config/initializers/cors.rb

Rails.application.config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'

    resource '*',
    headers: :any,
    methods: [:get, :post, :put, :patch, :delete, :options, :head],
    expose: ['X-Total-Count']
  end
end

这个后端运行在http://localhost:3001。

在前端,在react-admin 源中:

src/App.js

import React from 'react';
import  Admin, Resource  from 'react-admin';
import jsonServerProvider from 'ra-data-json-server';
import  PostList  from './posts';

const dataProvider = jsonServerProvider('http://localhost:3001');

const App = () => (
  <Admin dataProvider=dataProvider>
    <Resource name="posts" list=PostList />
  </Admin>
);

export default App;

它运行在http://localhost:3000。

访问前端http://localhost:3000/#/posts时,chrome浏览器控制台报错:

Warning: Missing translation for key: "The X-Total-Count header is missing in the HTTP Response. The jsonServer Data Provider expects responses for lists of resources to contain this header with the total number of results to build the pagination. If you are using CORS, did you declare X-Total-Count in the Access-Control-Expose-Headers header?"

即使在后端设置expose: ['X-Total-Count'],它也表示丢失。为什么?

【问题讨论】:

【参考方案1】:

查看有关数据提供者的文档。 https://marmelab.com/admin-on-rest//RestClients.html

您的 rails 可能与您尝试使用的 jsonServerProvider 提供程序不兼容。 jsonServerProvider 不适合生产使用。它更像是 json-server 兼容的假休息端点的测试/示例提供程序。

如果其中一个预建提供程序不能满足您的需求,您将需要编写自己的传输。这很容易。

【讨论】:

以上是关于无法从 react-admin 访问由 rails 开发的 API的主要内容,如果未能解决你的问题,请参考以下文章

React-admin:无法从 Nodejs 导入 Json 数据

react-admin登录传奇没有运行

react-admin 没有'访问控制允许来源'

无法从 Rails 应用程序中的 JS 访问 CSS

无法从手机访问rails服务器

无法在 react-admin 中自定义用户菜单