前端登陆调用后端api

前言

在Django服务器端写了一个API,返回JSON格式数据。前端登陆页面通过Ajax调用该API。

实例

login.html

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>login</title>
    </head>
    <body>
        <body>
            <div id="center">
                <form id="Form"  >
                        账号 <input type="text" id="adminName" class="adminname" name="phone"  value="" /> <br />
                        密码 <input type="password" id="psw" class="pwd" name="password" value="" /> <br />
                        <input type="button"   value="登陆" onclick="testAjax()" />
                </form> 
            </div>

            <script src="js/ajax.js"></script>
            <script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    </body>
</html>

ajax.js

function testAjax() {   
    var adminName = document.getElementById('adminName').value;//获取html表单中adminName输入域对象的值,既账号
    var psw = document.getElementById('psw').value;
    var user={       
        phone:adminName, 
        password:psw,
    };
    
    $.ajax({        
        type:'POST',     
        data:JSON.stringify(user),     
        contentType :'application/json',       
        dataType:'json',   
        url :'api地址',
        success :function(result){            
            if (result.status=="true"){
                
                //输出响应的message信息
                alert(result.message)
            }else{
                alert(result.message)
            }
        },
        error: function(xmlHttpRequest, textStatus, errorThrown){
            alert("请求对象XMLHttpRequest: "+XMLHttpRequest);
            alert("错误类型textStatus: "+textStatus);                        
            alert("异常对象errorThrown: "+errorThrown); 
        }   
    });
}

结果报错了。
错误信息:
Access to XMLHttpRequest at '服务器地址' from origin 'http://127.0.0.1:8848' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.

原因
这是由于ajax跨域访问引起的。所谓跨域就是,在www.aaa.com域下,访问www.bbb.com域下的资源;出于安全的考虑浏览器允许跨域写,而不允许跨域读,写就是上行(发送请求send reques),读就是下行(接受响应receive response)。

解决方法

  1. 临时解决方法: 给chrome浏览器添加参数

打开cmd命令进入chrome浏览器目录,执行以下命令

chrome.exe --disable-web-security --user-agent="Android" --user-data-dir="C:/temp-chrome-eng

mac系统

open -a Google\ Chrome --args --disable-web-security --user-data-dir="/Users/thantshweaung/Documents/Project/ionic/chrome_cache"
  1. 永久解决方法:安装django-cors-headers
pip install django-cors-headers

在settings.py中增加:

INSTALLED_APPS = (
  ...
  'corsheaders',
  ...
)
 
...
 
MIDDLEWARE  =  [  
    ... 
    'corsheaders.middleware.CorsMiddleware' ,
    'django.middleware.common.CommonMiddleware' ,
    ... 
]

CORS_ORIGIN_ALLOW_ALL = True

django-cors-headers详见:https://github.com/ottoyiu/django-cors-headers/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 224,764评论 6 522
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,235评论 3 402
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 171,965评论 0 366
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 60,984评论 1 300
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 69,984评论 6 399
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,471评论 1 314
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 41,844评论 3 428
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,818评论 0 279
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,359评论 1 324
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,385评论 3 346
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,515评论 1 354
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,114评论 5 350
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,836评论 3 338
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,291评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,422评论 1 275
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,064评论 3 381
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,581评论 2 365

推荐阅读更多精彩内容

  • http协议 Resource,URL,Request,Response,Headers http 请求的是资源R...
    Sharise_Mo佩珊阅读 694评论 0 4
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    HeroXin阅读 838评论 0 4
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    Yaoxue9阅读 1,305评论 0 6
  • 什么是跨域 跨域,是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript实...
    他方l阅读 1,067评论 0 2
  • 1 上午,在家搞卫生,我妈看见我在弄那张席子,然后她用一惯的语气纠正我的做法,我立马被触碰到了开关,我把席子摔下地...
    CherryHuang阅读 210评论 2 5