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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM