首页 > 其他分享 >Django 解决同源跨域问题

Django 解决同源跨域问题

时间:2023-08-21 12:22:56浏览次数:29  
标签:urls 跨域 views Django result 同源 import path com

Django 解决同源跨域问题

目录

由于浏览器具有同源策略的限制:在发送Ajax请求时,如果当前浏览器的URL是a.com,而页面中向b.com发送ajax请求,请求可以正常方法,但数据回到浏览器时,浏览器就会阻止。在b.com中设置一个响应头就可以解决问题。

1 site a

1.1 urls 配置

from django.urls import path,re_path
from app01 import views

urlpatterns = [
    #    path('admin/', admin.site.urls),
    re_path('^index/$',views.IndexView.as_view()),
    re_path('^hello/$',views.HelloView.as_view()),
]

1.2 app01.views配置

from django.shortcuts import render, HttpResponse
from django.views import View


# Create your views here.

class IndexView(View):
    def get(self, request, *args, **kwargs):
        return render(request=request, template_name='index.html')


class HelloView(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse('hello, it is a.com.')

1.3 index.html配置

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>a.com</h1>
<input type="button" value="b.com" onclick="localSite()">
<pre></pre>
<input type="button" value="b.com" onclick="remoteSite()">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
    function localSite() {
        $.ajax({
            url:"http://127.0.0.1:8001/hello/",
            type:"get",
            success: function (result) {
                console.log(result);
            },
            error: function () {
                console.log('Send Request Failed!');
            }
        })
    }
    function remoteSite() {
        $.ajax({
            url: "http://127.0.0.1:8002/hello/",
            type: "get",
            success: function (result) {
                console.log(result);
            },
            error: function () {
                console.log('Send Request Failed...')
            }
        })
    }
</script>
</body>
</html>

2 site b

2.1 urls 配置

from django.urls import path,re_path
from app01 import views

urlpatterns = [
    #    path('admin/', admin.site.urls),
    re_path(r'hello/$',views.helloView),
]

2.2 app01.views配置

from django.shortcuts import render,HttpResponse

# Create your views here.

def helloView(request):
    if request.method == 'GET':
        result = HttpResponse('it is b.com')
        # 以下两种方式都可以,让浏览器放行
        # result.headers['Access-Control-Allow-Origin'] = "*"
        # result['Access-Control-Allow-Origin'] = "*"
        return result

标签:urls,跨域,views,Django,result,同源,import,path,com
From: https://www.cnblogs.com/f-carey/p/17645685.html

相关文章

  • django 上传文件
    前后端分离下django框架上传文件实现方式实现方式一,通过model字段FileFiled()来实现model类classReport(models.Model):p_id=models.PositiveIntegerField('病人ID')file=models.FileField(upload_to='uploads/report/%Y/%m/%d/')def__str__(self):......
  • 利用pycharm创建第一个django API项目
    From:  ICT浪子 ICT浪子 2023-08-1916:34 发表于湖北---------------------------------------------------------------------------一、pycharm操作1、打开PyCharm,进入欢迎界面。2、点击"CreateNewProject"或选择"File"->"NewProject"。3、在新项目对话框中,......
  • Django 之login_required的知识点
    Django之login_required的知识点在进行页面登录验证优化时,想到了用户验证登录和登出及限流功能,在添加用户登录调用@login_required时,访问/login自动跳转到/accounts/login/,这个路由又没有定义就是显示404状态码。作为一个新入门的学习者首先是排查路由配置、视图、去掉验证@lo......
  • Django 登录页面优化的报错总结
    Django登录页面优化的报错总结在登录页面进行优化过程中,遇到的一些报错这边总结了一些希望会对读者有所帮助。调用new_key=CaptchaStore.generate_key()报错在调用CaptchaStore.generate_key()时出现错误,请确保您已正确设置了django-simple-captcha库。请按照以下步骤检查......
  • Django之登录页面优化--添加验证码
    Django之登录页面优化--添加验证码前面写的Django项目,前端登录页面较简单如下图,为了美化操作这边优化了前端登录页面。为了只专注登录页面优化这边新构建一个项目用于测试,后续在CV使用到其他项目上。 创建项目及应用django-adminstartprojectmyprojectcdmyprojectpy......
  • Django登录页面优化--动态验证码
    Django登录页面优化--动态验证码本章节添加修改动态验证码功能,基于前一章使用的前端环境进行代码修改。安装依赖库pipinstallPillowpipinstalldjango-simple-captcha添加captcha应用在myproject/settings.py文件的INSTALLED_APPS列表中添加captcha应用 INSTALLED......
  • linux服务器部署(以django项目为例)(二)
    装redis:yuminstallredis-y配置:vim/etc/redis.conf输入?requirepass输入i进行编辑,设密码:esc或者ctrl+c退出::wq表示保存退出启动:systemctlstartredissystemctlrestartredis开机自启:systemctlenableredis装python3.10解释器:先装依赖:yuminstallgcczlibzlib-de......
  • K8s 部署Django项目
    K8s部署Django项目K8s作为目前主流互联网使用技术栈,本次介绍如何将Django项目部署到Kubernetes中。项目代码使用前面几章节定义的Django文件上传代码,使用上一章打包好的镜像,接下来就是部署到K8s中,请往下看:DeploymentyamlapiVersion:apps/v1kind:Deploymentmetadata:......
  • Django 文件上传项目部署
    Django文件上传项目部署相关文件准备DockerfileDjango项目的主要文件是manage.py,并且你的依赖包列表在一个名为requirements.txt的文件中,根据你的实际项目结构和需求。#使用一个基础镜像#最小版镜像通常只包含了Python解释器和一些基本的系统工具FROMpython:3.8.10-sli......
  • Django对不确定多条件进行求交集搜索
    使用Django的Q方法创建搜索条件:name=request.GET.get('name')pages=request.GET.get('pages')operator=request.GET.get('operator')date1=request.GET.get('date1')date2=re......