我正在尝试在Google云上部署restful API。代码在我的本地工作正常。但是,当我点击项目URL时,在谷歌云上成功部署我的应用程序后,我收到以下错误:
无法从服务器读取。它可能没有合适的 访问控制原点设置。
我搜索并找到类似于我的问题的this帖子。我跟着它,为我的项目创建了CORS。以下是项目中创建的CORS:[Ran - gsutil cors get gs:// project-name ]
[{" maxAgeSeconds":86400,"方法":[" GET"," POST"," OPTIONS&# 34], " origin":[" *"]," responseHeader":[" Origin"," Accept", " X-Requested-With","授权","内容类型","内容长度", "接受编码"," 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?
答案 0 :(得分:0)
当您打算访问服务器上托管的资产(让我们称之为服务器B )不同于部署应用程序的资产时,需要CORS支持(服务器A )。您需要允许来自 Server B 一侧的不同域的HTTP请求(承载您从应用程序访问的数据的域)。为此,如果 Server B 托管在App Engine中,请在app.yaml文件中指定Access-Control-Allow-Origin http标头,如https://github.com/cmusatyalab/openface中所述。 :
handlers:
- url: /some_url
...
http_headers:
Access-Control-Allow-Origin: http://server-a.appspot.com
您还可以使用通配符&#39; *&#39;代替服务器 - 允许从任何域访问的URL。