Не могу прочитать с сервера. У него могут отсутствовать соответствующие настройки источника управления доступом | Облако Google | Чванство

Я пытаюсь развернуть спокойный API в облаке Google. Код работает нормально на моем локальном. Однако после успешного развертывания моего приложения в облаке Google, когда я нажимаю URL-адрес проекта, я получаю следующую ошибку:

Не могу прочитать с сервера. Он может не иметь соответствующих настроек источника управления доступом.

Я искал и нашел эту ветку, похожую на мою проблему. Я последовал этому и создал CORS для своего проекта. Ниже приведен созданный CORS для проекта: [Ran - gsutil cors get gs://project-name]

[{"maxAgeSeconds": 86400, "method": ["GET", "POST", "OPTIONS"], "origin": ["*"], "responseHeader": ["Origin", "Accept", " X-Requested-With", "Авторизация", "Content-Type", "Content-Length", "Accept-Encoding", "X-CSRF-Token"]}]

Ниже приведен сервис:

from services import api
from services import Resource
from services import fields

import models

api = api.namespace(name='College', description='RESTFul API for College')

college = api.model('College', {'name' : fields.String('name'),
                                'short_name' : fields.String('short_name')})

@api.route('/college')
class CollegeList(Resource):
    @api.marshal_with(college)
    def get(self):
        return models.College.query.all()

    @api.expect(college)
    def post(self):
        name = api.payload.get('name')
        short_name = api.payload.get('short_name')
        college = models.College(name=name, short_name=short_name)
        models.db.session.add(college)
        models.db.session.commit()
        return {'result' : name+' is Added!'}, 201

    @api.route('/college/<int:id>')
    class College(Resource):
        @api.marshal_with(college)
        def get(self, id):
            return models.College.query.filter(models.College.id == id).one()

Нужно ли что-нибудь в app.yaml для настройки CORS?


person miserable    schedule 26.02.2018    source источник


Ответы (1)


Поддержка CORS требуется, если вы собираетесь получить доступ к ресурсам, размещенным на сервере (назовем его Сервер B), отличном от того, на котором вы развертываете свое приложение (Сервер A). Вам нужно будет разрешить HTTP-запросы, поступающие из другого домена на стороне вашего сервера B (того, на котором размещены данные, к которым вы обращаетесь из своего приложения). Для этого, если Server B размещен в App Engine, укажите http-заголовок Access-Control-Allow-Origin в файле app.yaml, как описано в Документы Google:

handlers:
- url: /some_url
  ...
  http_headers:
    Access-Control-Allow-Origin: http://server-a.appspot.com

Вы также можете использовать подстановочный знак «*» вместо URL-адреса сервера, чтобы разрешить доступ из любого домена.

person arudzinska    schedule 01.03.2018