graphql-flutter 客户端移动应用程序无法连接到由 Graphene-Django 创建的服务器 graphQL 端点

graphql-flutter client mobile app cannot connect to server graphQL Endpoint created by Graphene-Django

我使用 graphene-django 制作了一个简单的 graphql-server,并且我在 http://127.0.0.1:8000/graphql 的桌面浏览器中成功测试了查询和变异。 同样为了在移动应用程序中进行测试,我制作了一个简单的 flutter 移动应用程序,它使用 graphql_flutter package. my flutter app was tested successfully with hasura-heroka graphql 端点,但我的 flutter 应用程序无法连接到我的 graphene-django graphql 端点。当我尝试 运行 我的移动应用程序时,它给出错误提示:

ClientException:无法连接到 http://127.0.0.1:8000/graphql

另一方面,为了解决这个问题,我在 django 项目的 settings.py 和 运行 graphene-django 服务器中制作了 ALLOWED_HOSTS=['my Ipv4 address']有了这个新主机,我尝试 运行 使用新端点 flutter 移动应用程序:http://my_IPv4_address:8000/graphql但仍然无法正常工作并给出相同的错误

请帮帮我

我解决了上面提到的 problem.I 通过在 django 项目的 urls.py 文件中用 csrf_exempt 装饰器包装 GraphQLView 来使我的 Graphql 端点免受 CSRF 保护,就像这个一样(见source ):

from django.conf.urls import url, include
from django.contrib import admin
from django.views.decorators.csrf import csrf_exempt
from graphene_django.views import GraphQLView
from cookbook.schema import schema

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^graphql$', csrf_exempt(GraphQLView.as_view(graphiql=True,schema=schema))),
]

值得一提的是,在 CSRF 保护设置中进行了上述修改后,我在 flutter 应用程序中使用“http://my-IPv4-address:8000/graphql”成功连接。 要获得 IPv4 地址,请遵循此 guide。之后,我将 my-IPv4-address 添加到 settings.py 文件中的 ALLOWED_HOSTS,如下所示:

ALLOWED_HOSTS = ['192.168.x.xxx', 'localhost', '127.0.0.1']

最后,对于 运行 graphene-django 服务器,我在 cmd 控制台中使用此命令:

(env) python ./manage.py runserver 0.0.0.0:8000