微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Django,谷歌应用引擎,存储桶没有'Access-Control-Allow-Origin'

如何解决Django,谷歌应用引擎,存储桶没有'Access-Control-Allow-Origin'

您好,我有一个无法解决的问题。现在我有一个简单的 django 项目,我即将完成。几天前,我将静态文件和媒体文件上传到谷歌云 sql-bucket。通常媒体文件一切正常,但是当我上传静态文件时,开始发生一些事情。以下是一些错误消息(30+):

Access to script at 'https://storage.googleapis.com/blablabla/debug_toolbar/js/toolbar.js' from origin 'http://127.0.0.1:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
GET https://storage.googleapis.com/blablabla/debug_toolbar/js/toolbar.js net::ERR_Failed
Access to font at 'https://storage.googleapis.com/blablabla/Fonts/jost/Jost-500-Medium.woff2' from origin 'http://127.0.0.1:8000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

通常 django 也不接受我的静态文件,因为它们在其他地方,但我加载了 django-cors-headers(我不知道它是全名。)并且 django 接受大部分 css 文档。这是我的 settings.py(我在这里粘贴时剪掉了一些部分):

ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
    'honeypot','ckeditor','ckeditor_uploader','modeltranslation','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','corsheaders','Product.apps.ProductConfig','captcha','admin_honeypot',]
MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware','django.contrib.sessions.middleware.SessionMiddleware','corsheaders.middleware.CorsMiddleware','django.middleware.locale.LocaleMiddleware','django.middleware.common.CommonMiddleware','django.middleware.csrf.CsrfViewMiddleware','corsheaders.middleware.CorsPostCsrfMiddleware','django.contrib.auth.middleware.AuthenticationMiddleware','django.contrib.messages.middleware.MessageMiddleware','django.middleware.clickjacking.XFrameOptionsMiddleware',]
CORS_ALLOW_CREDENTIALS = True
CORS_ALLOWED_ORIGINS = (
    'http://127.0.0.1:8000','http://localhost:8000','https://storage.googleapis.com','https://googleapis.com',)
CSRF_TRUSTED_ORIGINS = [
    'http://127.0.0.1:8000',]

但是我的问题从这里开始。例如,我有 4 个 css,例如在我的第一个 css(theme.css) 中有这样一行:

@font-face {
  font-family: "Jost";
  font-weight: 600;
  src: url(https://storage.googleapis.com/blablabla/Fonts/jost/Jost-600-Semi.woff2) format("woff2"),url(https://storage.googleapis.com/blablabla/Fonts/jost/Jost-600-Semi.woff) format("woff"),url(https://storage.googleapis.com/blablabla/Fonts/jost/Jost-600-Semi.ttf) format("truetype"); }

或在调试工具栏文档中的 toolbar.js

import { $$,ajax } from "./utils.js";

此外,我所有的 css 和字体文件都在同一个 google 存储桶中。我的网站接受 css 文档,但不接受像我粘贴的内部引用。而且我不知道错误在哪里。我到处搜索,但找不到任何解决方案。我希望有一个人可以帮助我。我认为这个错误不是因为 django,可能是因为谷歌

解决方法

好像是配置CORS的问题。我认为在 Google Documentation 中有很好的解释。

简而言之,您需要使用 gcloud、REST API 或您提供的编程语言库(文档中的示例)配置存储桶 cors。如果您设置了 Access-Control-Allow-Origin

,GCS 将添加 origin 标头

origin 标头的功能描述得很好here

如果浏览器请求中的来源与您的 CORS 配置中的来源相匹配,Cloud Storage 会向浏览器返回 Access-Control-Allow-Origin。如果不匹配,则 Cloud Storage 不会在响应中包含 Access-Control-Allow-Origin。您可以提供一个通配符值来授予对所有源的访问权限:<Origin>*</Origin>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?