首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Django + Service Workers:“重定向响应用于重定向模式不是跟随的请求”错误

问题:Django + Service Workers:“重定向响应用于重定向模式不是跟随的请求”错误

回答: 在使用Django和Service Workers时,有时会遇到错误信息:“重定向响应用于重定向模式不是跟随的请求”。这个错误通常是由Service Workers的缓存策略引起的。

Service Workers是一种在浏览器后台运行的脚本,可以拦截和处理网络请求,实现离线缓存、消息推送等功能。在处理重定向请求时,Service Workers会检查请求的重定向模式,以确定是否应该跟随重定向。

出现这个错误的原因是重定向模式不匹配。重定向模式分为跟随(follow)和不跟随(manual)两种。当重定向模式为跟随时,Service Workers会自动处理重定向请求;而当重定向模式为不跟随时,Service Workers会忽略重定向请求。

解决这个问题的方法是根据具体需求来设置重定向模式。可以通过在Django的视图函数中设置重定向模式,或在Service Workers的缓存策略中设置重定向模式,来确保它们一致。

以下是一种可能的解决方法:

  1. 在Django的视图函数中设置重定向模式。可以使用HttpResponseRedirect类的permanent参数来指定重定向模式。例如:
代码语言:txt
复制
from django.shortcuts import redirect

def my_view(request):
    return redirect('example_view', permanent=True)
  1. 在Service Workers的缓存策略中设置重定向模式。可以使用Workbox库来实现Service Workers的缓存管理。在缓存策略中,可以使用followRedirects方法来设置重定向模式为跟随。例如:
代码语言:txt
复制
importScripts('https://storage.googleapis.com/workbox-cdn/releases/5.1.2/workbox-sw.js');

workbox.routing.registerRoute(
  new RegExp('^https://example.com/api/'),
  new workbox.strategies.NetworkFirst({
    plugins: [
      new workbox.cacheableResponse.CacheableResponsePlugin({ statuses: [200] }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Access-Control-Allow-Origin': '*'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Access-Control-Allow-Headers': 'Content-Type'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Content-Type': 'application/json'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Accept': 'application/json'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Vary': 'Origin'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Allow': 'GET, OPTIONS'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Content-Security-Policy': 'default-src \'none\''} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'X-Content-Type-Options': 'nosniff'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Referrer-Policy': 'no-referrer'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'X-XSS-Protection': '1; mode=block'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'X-Frame-Options': 'DENY'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Content-Language': 'en-US'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'X-UA-Compatible': 'IE=edge,chrome=1'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Cache-Control': 'public, max-age=31536000, immutable'} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Expires': new Date().toUTCString()} }),
      new workbox.cacheableResponse.CacheableResponsePlugin({ headers: {'Date': new Date().toUTCString()} }),
    ],
    followRedirects: 'follow'
  })
);

以上解决方法中,示例代码仅供参考,具体的实现要根据实际情况进行调整。另外,腾讯云提供了云计算相关的产品和服务,可根据具体需求选择适合的产品。关于腾讯云的产品和介绍,可以查阅腾讯云官方网站。

希望以上回答能帮助到您!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

django 1.8 官方文档翻译: 14-4-1 重定向应用

重定向应用 Django 原生自带一个可选重定向应用。它将简单重定向保存到数据库中并处理重定向。它默认使用HTTP 响应状态码301 Moved Permanently。...每当Django 应用引发一个404 错误,该中间件将到重定向数据库中检查请求URL。它会根据old_path 和SITE_ID 设置站点ID 查找重定向路径。...如果找到匹配记录而new_path 为空,它将发送一个410 (“Gone”) HTTP 头和空(没有内容响应。 如果没有找到匹配记录,请求将继续正常处理。...这个中间件只针对404 错误启用 —— 不能用于500 或其它状态码。 注意MIDDLEWARE_CLASSES 顺序很重要。...response_gone_class New in Django 1.7. HttpResponse 类,用于找不到请求路径Redirect或找到new_path 值为空时候。

60710

03.Django基础三之视图函数

响应可以是一张网页HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。   无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。...('OK')     Djangourl是将一个请求分配给可调用函数,而不是一个class。...a=1 print(request.is_ajax()) #判断是不是ajax发送请求,True和False ''' Django一定最后会响应一个HttpResponse...,就叫做重定向,网站自己做重定向,你访问还是访问你之前,你自己啥也不用做,浏览器发送请求,然后服务端响应,然后服务端告诉浏览器,你直接跳转到另外一个网址上,那么浏览器又自动发送了另外一个请求,发送到服务端...参数:         request: 用于生成响应请求对象。

5K30
  • 关于“Python”核心知识点整理大全58

    19.2.3 注销 现在需要提供一个让用户注销途径。我们不创建用于注销页面,而让用户只需单击一个 链接就能注销并返回到主页。..., views.logout_view, name='logout'), ] 这个URL模式请求发送给函数logout_view()。...在函数register() 中,我们检查要响应是否是POST请求。如果不是,就创建一个UserCreationForm实例,且不给 它提供任何初始数据(见1)。...如果响应是POST请求,我们就根据提交数据创建一个UserCreationForm实例(见2), 并检查这些数据是否有效:就这里而言,是用户名未包含非法字符,输入两个密码相同,以及 用户没有试图做恶意事情.../login/' 现在,如果未登录用户请求装饰器@login_required保护页面,Django重定向到 settings.py中LOGIN_URL指定URL。

    11910

    django 1.8 官方文档翻译: 3-6-2 内建中间件

    如果这个新URL存在于URLconf,这时Django重定向请求到这个新URL上,否则,一开始URL按正常情况处理。...此外,这些方法可以用于破坏DjangoCSRF保护。在你站点使用GZipMiddleware之前,你应该先仔细考虑一下你站点是否容易受到这些攻击。...这样一来,如果有任何请求没有被Django处理(比如静态媒体或用户上传文件),他们会拥有和向Django应用请求相同保护。...如果JavaScript在服务器响应中被重放,页面就会停止渲染,并展示一个错误页来取代。 X-XSS-Protection协议头用来控制XSS过滤器操作。...SECURE_SSL_REDIRECT专门为这种部署情况而设计,当这不可选择时候。 如果SECURE_SSL_HOST设置有一个值,所有重定向都会发到值中主机,而不是原始请求主机。

    95530

    二挡起步——pythonweb开发Django框架,前端原生+Django后端框架002(附带小案例)

    Django框架 Django是一个开放源代码Web应用框架,由Python写成。采用了MTV框架模式,即模型M,视图V和模版T。...它最初是被开发来用于管理劳伦斯出版集团旗下一些以新闻内容为主网站,即是CMS(内容管理系统)软件。并于2005年7月在BSD许可证下发布。...(request,'url_lqj.html') ​ 【响应】HttpResponse 说明:(“返回内容”),内容字符串返回给请求者。...spm=1000.2115.3001.5343") 效果:当我们在浏览器输入我们写路由,Django会利用该重定向给我们跳转到上当地址(这里地址是我CSDN主页地址) ​  文末小案例(用户登录简单案例...",{"tishi_1":tishi}) 案例效果: 用户名或密码错误时:  用户名或密码正确时:  随后重定向成功:

    28620

    python基础菜鸟教程_菜鸟课程好还是文都好

    采用了MTV框架模式,即模型M,视图V和模版T。Django主要目的是简便、快速开发数据库驱动网站。...之后表示传递参数,这里传递了p1和p2两个参数。 通过这样方式传递参数,就不会出现因为正则匹配错误而导致问题了。在Django中,此类参数解析是通过request.GET.get方法获取。...4.views.py 视图函数是一个简单Python 函数,它接受Web请求并且返回Web响应响应可以是一张网页HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . ....MIME类型 4.21子类 django.http包含许多HttpResponse subclasses,用于处理不同类型HTTP responses。...def index(request): return render(request, template_name,context) 参数: request: 用于生成响应请求对象。

    1.7K10

    性能测试|JMeter取样器介绍(二)

    图片自动重定向如果选中该选项,当发送HTTP请求后得到响应是302/301时,JMeter会自动重定向到新页面,但是JMeter是不记录重定向过程内容。...只能用于GET和HEAD方法,如果是POST或者PUT请求则取样器不会发送。跟随重定向Http Request取样器默认选项,当响应code是3xx时,自动跳转到目标地址。...与自动重定向不同,JMeter会记录重定向过程中所有请求响应,在查看结果树时可以看到服务器返回内容,如有多个跳转则多个请求都会被记录下来,此为默认选项。...自动重定向跟随重定向区别只在于是否记录多个跳转请求上。在JMeter默认选中跟随重定向,但跟随重定向与自动重定向只能二选一。...所以HTTP 1.0中出现了Connection: keep-alive属性,用于建立长连接,即我们所说Keep-Alive模式。Keep-Alive模式更加高效,因为避免连接频繁建立和释放开销。

    50320

    python 终极篇 --- django

    响应可以是一张网页HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。...Django中提供了method_decorator装饰器用于将函数装饰器转换为方法装饰器。 ?...Django会将这个对象自动传递给响应视图函数,一般视图函数约定俗成地使用 request 参数承接这个对象。 其实request参数就接收了页面请求....结合一个给定模板和一个给定上下文字典,并返回一个渲染后 HttpResponse 对象。 参数: request: 用于生成响应请求对象。...return redirect(object, permanent=True)   扩展阅读: 临时重定向响应状态码:302)和永久重定向响应状态码:301)对普通用户来说是没什么区别的,它主要面向是搜索引擎机器人

    1.6K10

    DjangoRestFramework,restful规范、APIview、解析器组件、Postman等

    它与302和307含义一样,也是"暂时重定向",区别在于302和307用于GET请求,而303用于POST、PUT和DELETE请求。...500 Internal Server Error:客户端请求有效,服务器处理时发生了意外。 503 Service Unavailable:服务器无法处理请求,一般用于网站维护状态。       ...301 状态码(永久重定向)302 状态码(暂时重定向,307也是这个含义) 400 INVALID REQUEST - [POST/PUT/PATCH]:用户发出请求错误,服务器没有进行新建或修改数据操作...GET /orders/2 HTTP/1.1 Accept: application/json       2.8.2 发生错误响应         发生错误时不要响应200状态码,有一种不恰当做法是...四 Postman使用 Postman是一个模拟发送请求并获得响应结果工具,不用这个工具时候,我们写web项目,调试接口返回数据时候,是不是都要启动项目,通过浏览器访问,然后查看数据啊,有了这个工具我们就可以不用启动浏览器来

    2.5K20

    Django框架学习(一)

    服务器发生错误 3、URL地址:协议、域名、端口、请求资源路径、请求参数 ?...migrations目录用于存放数据库迁移历史文件 models.py文件用于保存数据库模型类 tests.py文件用于开发测试用例,编写单元测试 views.py 文件用于编写web应用视图 3.2helloworld...程序创建 1、在定义视图函数时候,必须接收request(作为形参接收请求对象) Flask框架中视图函数可以直接返回字符串,但是Django视图返回必须是响应对象 2、返回响应对象HttpResponse...'static_files') 设置访问金泰文件url地址前缀(默认有,不设置也可以) STATIC_URL = '/static/' 注意: Django 仅在调试模式下(DEBUG=True)模式下对外提供静态文件...Content-Type设置为 application/json 6.3.2响应时进行页面的重定向 flask和Django重定向是一样redirect('重定向url地址') 6.4cookie

    2.2K20

    Django之views系统

    DjangoView(视图)简介 一个视图函数(类),简称视图,是一个简单Python 函数(类),它接受Web请求并且返回Web响应。...响应可以是一张网页HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。 无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你当前项目目录下面。...这个视图会返回一个HttpResponse对象,其中包含生成响应。每个视图函数都负责返回一个HttpResponse对象。 Django使用请求响应对象来通过系统传递状态。...结合一个给定模板和一个给定上下文字典,并返回一个渲染后 HttpResponse 对象。 参数: request: 用于生成响应请求对象。...return redirect(object, permanent=True) 扩展阅读: 临时重定向响应状态码:302)和永久重定向响应状态码:301)对普通用户来说是没什么区别的,它主要面向是搜索引擎机器人

    2.2K70

    Django学习笔记之Django视图View

    一个视图函数(类),简称视图,是一个简单Python 函数(类),它接受Web请求并且返回Web响应响应可以是一张网页HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片。...这个视图会返回一个HttpResponse对象,其中包含生成响应。每个视图函数都负责返回一个HttpResponse对象。 Django使用请求响应对象来通过系统传递状态。...结合一个给定模板和一个给定上下文字典,并返回一个渲染后 HttpResponse 对象。 参数: request: 用于生成响应请求对象。...默认为'text/html' status:响应状态码。默认为200。    useing: 用于加载模板模板引擎名称。...return redirect(object, permanent=True)   扩展阅读: 临时重定向响应状态码:302)和永久重定向响应状态码:301)对普通用户来说是没什么区别的,它主要面向是搜索引擎机器人

    1.8K30

    Django之视图层

    一、视图函数   一个视图函数,简称视图,是一个简单python函数,接收web请求并返回web响应响应可以是一张网页HTML内容,一个重定向,一个404错误等。...,redirect 都是返回方式而已 函数名是可以随便取,只要和url相对应就行   二、request请求对象   request是Django请求报文中请求行、请求头,请求体封装成一个对象,...如果一个响应需要根据请求是否是通过AJAX 发起,并且你正在使用某种形式缓存例如Django cache middleware, 你应该使用 vary_on_headers('HTTP_X_REQUESTED_WITH...文件发给浏览器 中间有两次请求 301和302区别   301和302状态码都表示重定向,就是说浏览器在拿到服务器返回这个状态码后会自动跳转到一个新URL地址,这个地址可以从响应Location...这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名 网站,也需要通过重定向让访问这些域名用户自动跳转到主站点等

    1.7K10

    HTTP状态码及其含义

    平时不是很留意这些状态码信息,也不是很了解出现这种状态内在原因,每次出现都要查找。为了详细梳理和备忘,整理一份http状态码及其含义解析。        ...---- 2XX:成功状态码 200 OK:请求成功,请求所希望响应头或数据体将随此响应返回 201 Created:表示服务器在请求响应中建立了新文档;应在定位头信息中给出它URL。...例如,如果浏览器错误请求http://host/~user(缺少了后面的斜杠),有的服务器 返回301,有的则返回302。严格地说,我们只能假定只有当原来请求是GET时浏览器才会自动重定向。...许多浏览器会错误响应302应答进行重定向,即使原来请求是POST,即使它实际上只能在POST请求应答是303时才能重定 向。...由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向GET和POST请求;如果是307应答,则浏览器只 能跟随对GET请求重定向

    1.7K20

    Django 博客单元测试:测试评论应用

    __str__(), '评论者: 评论内容') 测试视图函数 我们只有一个发表评论视图函数,根据视图函数逻辑,需要测试以下几点: 只处理 POST 请求,其它请求将返回 405 Method Not...接着使用如下代码获取表单错误并断言响应中是否包含了这些错误: for field_name, errors in form.errors.items(): for err in errors:...由于评论成功后需要重定向,因此传入 follow=True,表示跟踪重定向,因此返回响应,是最终重定向之后返回响应(即被评论文章详情页),如果传入 False,则不会追踪重定向,返回响应就是一个响应码为...302 重定向响应。...对于重定向响应,使用 assertRedirects 进行断言,这个断言方法会对重定向整个响应过程进行检测,默认检测响应码从 302 变为 200。

    54930

    JMeter断言07

    要测试响应字段 响应文本 服务器响应文本,一般情况下,我们都是勾选改选项,用于验证服务器返回值。...多用响应文本方式来进行断言验证 URL样本 对请求url进行断言,如果请求没有重定向(302),那么该url即为请求url;如果有重定向(切跟随重定向),那么url则包含了请求url和重定向url。...,主要用于断言当响应头带有唯一或特定意义时。...Ingore Status 请参见4响应代码使用说明。 模式匹配规则 包括: 指返回结果包含要测试模式中指定内容,支持正则表达式 匹配:(1)相当于equals。...即正则表达式必须能匹配整个返回值,而不是返回部分值,注意与包括模式区别(包括是支持模糊匹配)。 Equals:指返回结果与指定测试模式完全一致。

    1.8K70

    ⚡3分钟⚡熟悉面试常问状态码,面试官都听呆了

    目录 1开头 2开头 3开头 4开头 5开头 image.png 1开头 这一类型状态码,代表请求已被接受,需要继续处理。 这类响应是临时响应,只包含状态行和某些可选响应头信息,并以空行结束。...例如,如果浏览器错误请求 http://host/~user (缺少了后面的斜杠) ,有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来请求是GET时浏览器才会自动重定向。...许多浏览器会错误响应302应答进行重定向,即使原来请求是POST,即使它实际上只能在POST请求应答是303时 才能重 定向。...由于这个原因,HTTP 1.1新增了307,以便更加清除地区分几个状态代码:当出现303应答时,浏览器可以跟随重定向GET和POST请求;如果是307应答,则浏览器只 能跟随 对GET请求重定向。...除非这是一个HEAD 请求,否则服务器应当包含一个解释当前错误状态以及这个状况是临时还是永久解释信息实体。浏览器应当向用户展示任何在当前响应中被包含实体。这些状态码适用于任何响应方法。

    1.8K20

    Django重定向

    Django重定向 在前后端分离情况下,我们很少使用重定向。 为什么要使用重定向? 我们为什么要将用户访问重定向到不同 URL 地址?...我们看看 Django 项目是怎么回答: 当你未登录并请求需要身份验证URL(如Django管理员)时,Django会将你重定向到登录页面 成功登录后,Django会将你重定向到最初请求URL...如果是,返回成功响应;如果该请求发起者未登录,则后端返回未登录,前端根据返回值,跳转到登录页面即可。当然,也可以是后端直接重定向到前端页面。不过这样做,就需要知道前端路由。...先看下图: 可以看到,请求url是http://127.0.0.1:8008/test,返回状态码是302,代表重定向。然后在返回响应头中包含一个名为Location值。...浏览器收到302响应之后,会自动对响应头中包含Location进行请求,所以我们看到请求http://127.0.0.1:8008/test之后,实际上页面跳转到了百度一下。

    2.6K20
    领券