【问题标题】:Font from origin 'https://storage.googleapis.com' has been blocked from loading by Cross-Origin Resource Sharing policy来自“https://storage.googleapis.com”的字体已被跨源资源共享策略阻止加载
【发布时间】:2015-12-23 22:56:36
【问题描述】:

背景

  • 我正在使用 Flask 和 Python 运行 Google App Engine。
  • 我正在通过 https://storage.googleapis.com/* 调用 Google Cloud Storage 存储桶中的某些网络资产

根据以下证据,我可以验证请求中是否设置了 Access-Control-Allow-Originheader。

问题

那我的浏览器(chrome)中仍然出现以下错误。

来自“https://storage.googleapis.com”的字体已被阻止 通过跨域资源共享策略加载:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://localhost:8080” 访问。

代码

我正在使用Flask Snippet“HTTP 访问控制的装饰器”来设置来源,如下所示:

@admin_articles_routes.route('/xxx/xxx/xxx-xx')
@crossdomain(origin="*")
@authenticate_admin
def edit_article():

-------- 编辑-----------

Curl response
Vinays-MacBook-Pro:App-Engine vinay$ curl -version http://localhost:8080/xxxx/xxxx/xxxx-xxxx?ID=ahlkZXZ-Y2ZjLW1lbGJvdXJuZS13ZWJzaXRlcjbGUYgICAgICAgAoM
*   Trying ::1...
* connect to ::1 port 8080 failed: Connection refused
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 8080 (#0)
> GET /xxx/xxxx/xxxx-xxxxx?ID=ahlkZXZ-Y2ZjLW1lbGJvdXJuZS13ZWJzaXRlcjELEgdBcnRpY2xlIhBBcnRpY2xlR3JhZHBhS2V5DAsSB0FydGljbGUYgICAgICAgAoM HTTP/1.1
> Host: localhost:8080
> User-Agent: curl/7.43.0
> Accept: */*
> Referer: rsion
> 
< HTTP/1.1 302 Found
< access-control-max-age: 21600
< location: http://localhost:8080/_ah/login?continue=http%3A//localhost%3A8080/xxxx/xxxxx/xxxx-xxxxx%3FID%3DahlkZXZ-Y2ZjLW1lbGJvdXJuZS13ZWJzbGUYgICAgICAgAoM
< access-control-allow-origin: *
< access-control-allow-methods: HEAD, GET
< content-type: text/html; charset=utf-8
< Cache-Control: no-cache
< Expires: Fri, 01 Jan 1990 00:00:00 GMT
< Content-Length: 575
< Server: Development/2.0

【问题讨论】:

  • 我看到了access-control-allow-origin,但没有看到Access-Control-Allow-Origin
  • sn-p 代码的值是大写的。 h['Access-Control-Allow-Origin'] = 原点
  • 所以你的意思是这个带有标题的响应图像是假的?那你可以展示一个真实的吗?
  • 我不认为它是假的。我认为它的小写。代码库的标题为驼峰式。
  • 但是在图片上不是驼峰式的,是不是带有真实标题的真实图片?

标签: python google-chrome google-app-engine flask cors


【解决方案1】:

这是 Greg 提供的最后一个答案的 Community Wiki post

CORS Access-Control-Allow-Origin 标头应由接受请求的主机服务器返回,因为它是为谁可以访问自己的资源设置规则的服务器。

CORS OPTIONS preflight headers 将由发出请求的请求者设置,以便它正确地向主机服务器标识自己。

有关更多信息,您可以查看此附加信息Stack Overflow post

【讨论】:

    猜你喜欢
    • 2016-07-29
    • 2014-10-24
    • 2015-02-05
    • 2016-10-12
    • 2016-10-21
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    相关资源
    最近更新 更多