zoukankan      html  css  js  c++  java
  • Django 跨域问题

    当使用Django 做接口时,被html5 或者app访问时 存在跨域问题 导致无法请求到数据,具体解决办法如下;

    跨域问题解决 安装pip install django-cors-headers
    修改Django下setting.py

    INSTALLED_APPS = [
        ...
        'corsheaders',
        ...
     ] 
    
    MIDDLEWARE = (
        ...
        'corsheaders.middleware.CorsMiddleware',
        'django.middleware.common.CommonMiddleware', # 注意顺序
        ...
    )
    #跨域增加忽略
    CORS_ALLOW_CREDENTIALS = True
    CORS_ORIGIN_ALLOW_ALL = True
    CORS_ORIGIN_WHITELIST = (
        '*'
    )
    
    CORS_ALLOW_METHODS = (
        'DELETE',
        'GET',
        'OPTIONS',
        'PATCH',
        'POST',
        'PUT',
        'VIEW',
    )
    
    CORS_ALLOW_HEADERS = (
        'XMLHttpRequest',
        'X_FILENAME',
        'accept-encoding',
        'authorization',
        'content-type',
        'dnt',
        'origin',
        'user-agent',
        'x-csrftoken',
        'x-requested-with',
        'Pragma',
    )
    
    

    测试html代码

    <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>
        <script type="text/javascript">
        function copyText(){
            $.ajax({
                type: 'GET',
                dataType:'jsonp',
                jsonp:"callback",
                url: 'http://127.0.0.1:8000/hello',
                success: function (data) {
                    console.log(data)
                },
                error: function () {
                    console.log("有问题1111")
                }
            });   
        }
    </script>
    
    <button onclick="copyText()">复制文本</button>

    当ajax采用jsonp时 需要用以下调用方式
    from django.http import HttpResponse
    import  json
    def hello(request):
        callback = request.GET['callback']
        response = HttpResponse('{0}({1})'.format(callback,json.dumps({"key":"value"})))
        return  response

    或者报 SyntaxError: unexpected token: ':' 或者 SyntaxError: missing ; before statement

  • 相关阅读:
    mysql 用户表结构设计,第三方登录
    linux centOS服务器部署ssh,免密码登陆linux
    linux SSH免密码登录远程服务器
    java反射机制学习笔记
    jvm知识
    类继承相关信息
    拦截器和过滤器的执行顺序和区别
    实现Map按key或按value排序
    喜欢的句子
    sql 性能优化相关--总结别人的总结,未做验证,先归纳
  • 原文地址:https://www.cnblogs.com/U-tansuo/p/Django_get_post.html
Copyright © 2011-2022 走看看