摘要:前后端分離時(shí)關(guān)于前端數(shù)據(jù)時(shí)遇到的一個(gè)問(wèn)題在寫(xiě)一個(gè)報(bào)名提交的頁(yè)面前端組寫(xiě)了前端頁(yè)面但是沒(méi)有寫(xiě)后端的傳值本來(lái)想構(gòu)建結(jié)構(gòu)目錄但是想實(shí)現(xiàn)的形式可以控制提交時(shí)間段在不招新的時(shí)間關(guān)閉后端就打算分離開(kāi)表單提交的一開(kāi)始是這樣寫(xiě)的提交成功現(xiàn)在不迎新哦后端
前后端分離時(shí),關(guān)于前端Ajax-Post數(shù)據(jù)時(shí),遇到的一個(gè)問(wèn)題
在寫(xiě)一個(gè)報(bào)名提交的頁(yè)面,前端組寫(xiě)了前端頁(yè)面
但是沒(méi)有寫(xiě)后端的傳值,本來(lái)想構(gòu)建Flask結(jié)構(gòu)目錄
但是想實(shí)現(xiàn)API的形式,可以控制提交時(shí)間段-在不招新的時(shí)間關(guān)閉后端
就打算分離開(kāi),form表單提交的Post一開(kāi)始是這樣寫(xiě)的
$("form").submit(function(){ var flagname = isname(); var flagphone = isphone(); var flagclass = isclass(); var flagemail = isemail(); var flaggroup = isgroup(); if(flagname == true && flagphone == true && flagclass == true && flagemail == true && flaggroup == true){ var data={ InfoNmae:InfoName.value, InfoPho:InfoPho.value, InfoCls:InfoCls.value, InfoEmail:InfoEmail.value, InfoGroup:arr, InfoPower:InfoPower.value }; $.ajax({ type:"POST", url: "/joinus", data: JSON.stringify(data), dataType : "json", success:function(res){ alert("提交成功"); }, error: function (res){ var json_data=JSON.stringify(res); alert(json_data); // alert("現(xiàn)在不迎新哦~"); }, }); } else { return false; } })
后端是這樣
@app.route("/joinus",methods=["POST"]) def index(): data=request.get_json(force=True) if data: print(data) return jsonify({"status":True}) else: return jsonify({"status":False})
一開(kāi)始想的是,直接將url改為后端運(yùn)行的絕對(duì)路徑不行了
但是修改之后發(fā)現(xiàn),但是一直報(bào)500錯(cuò)誤,后來(lái)才知道是跨域問(wèn)題......
在網(wǎng)上找到了這種方法
第一種直接修改數(shù)據(jù)類(lèi)型為jsonp,采用GET方法,確實(shí)可行.....
$.ajax({ type:"POST", url: "http://127.0.0.1:5000/joinus", data: JSON.stringify(data), dataType : "jsonp", success:function(res){ alert("提交成功"); }, error: function (res){ var json_data=JSON.stringify(res); alert(json_data); // alert("現(xiàn)在不迎新哦~"); }, });
第二種就是在flask端加上響應(yīng)頭
但是上個(gè)鏈接中在用make_reponse()函數(shù)形成響應(yīng)頭時(shí)沒(méi)有將數(shù)據(jù)json化
還是報(bào)500錯(cuò)誤
@app.route("/api",methods=["POST"]) def index(): data=request.get_json(force=True) if data: print(data) res = make_response(jsonify(data)) res.headers["Access-Control-Allow-Origin"] = "*" res.headers["Access-Control-Allow-Methods"] = "POST" res.headers["Access-Control-Allow-Headers"] = "x-requested-with,content-type" return res else: return jsonify({"error":False})
第三種是應(yīng)用了flask集成的輪子
直接pip install flask_cors
from flask_cors import CORS # r"/*" 是通配符,讓本服務(wù)器所有的 URL 都允許跨域請(qǐng)求 CORS(app, resources=r"/*") @app.route("/joinus",methods=["GET","POST"]) def index(): data=request.get_json(force=True) if data: print(data) return jsonify({"status": True}) else: return jsonify({"status": False})
$.ajax({ type:"POST", crossDomain: true, url: "http://127.0.0.1:5000/joinus", data: JSON.stringify(data), dataType : "json", success:function(res){ alert("提交成功"); }, error: function (res){ var json_data=JSON.stringify(res); alert(json_data); // alert("現(xiàn)在不迎新哦~"); }, });
感覺(jué)第三種方便點(diǎn),第二種也不錯(cuò)
原文鏈接
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/41353.html
摘要:瀏覽器的同源策略固然保障了互聯(lián)網(wǎng)世界的數(shù)據(jù)隱私與數(shù)據(jù)安全,但是如果當(dāng)我們需要使用跨域請(qǐng)求資源時(shí),同源策略又會(huì)成為開(kāi)發(fā)者的阻礙。我們之前提到過(guò),如果想要繞過(guò)瀏覽器同源策略,實(shí)現(xiàn)使用技術(shù)跨域獲取資源,需要服務(wù)端和客戶端的協(xié)同合作。 瀏覽器的同源策略固然保障了互聯(lián)網(wǎng)世界的數(shù)據(jù)隱私與數(shù)據(jù)安全,但是如果當(dāng)我們需要使用AJAX跨域請(qǐng)求資源時(shí),同源策略又會(huì)成為開(kāi)發(fā)者的阻礙。在本文中,我們會(huì)簡(jiǎn)單介紹需...
摘要:需注意的是由于同源策略的限制,所讀取的為跨域請(qǐng)求接口所在域的,而非當(dāng)前頁(yè)。目前,所有瀏覽器都支持該功能需要使用對(duì)象來(lái)支持,也已經(jīng)成為主流的跨域解決方案。反向代理接口跨域跨域原理同源策略是瀏覽器的安全策略,不是協(xié)議的一部分。 什么是跨域? 跨域是指一個(gè)域下的文檔或腳本試圖去請(qǐng)求另一個(gè)域下的資源,這里跨域是廣義的。 廣義的跨域: 1.) 資源跳轉(zhuǎn): A鏈接、重定向、表單提交 2.) 資源...
摘要:二跨域解決方案原理利用標(biāo)簽沒(méi)有跨域限制的漏洞,網(wǎng)頁(yè)可以得到從其他來(lái)源動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)。使用反向代理實(shí)現(xiàn)跨域,是最簡(jiǎn)單的跨域方式。 前言 前后端數(shù)據(jù)交互經(jīng)常會(huì)碰到請(qǐng)求跨域,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。 本文完整的源代碼請(qǐng)猛戳github博客,紙上得來(lái)終覺(jué)淺,建議動(dòng)手敲敲代碼 一、什么是跨域? 1.什么是同源策略及其限制內(nèi)容? 同源策略是一種約定,它是瀏覽器最核心...
摘要:二跨域解決方案原理利用標(biāo)簽沒(méi)有跨域限制的漏洞,網(wǎng)頁(yè)可以得到從其他來(lái)源動(dòng)態(tài)產(chǎn)生的數(shù)據(jù)。使用反向代理實(shí)現(xiàn)跨域,是最簡(jiǎn)單的跨域方式。 前言 前后端數(shù)據(jù)交互經(jīng)常會(huì)碰到請(qǐng)求跨域,什么是跨域,以及有哪幾種跨域方式,這是本文要探討的內(nèi)容。 本文完整的源代碼請(qǐng)猛戳github博客,紙上得來(lái)終覺(jué)淺,建議動(dòng)手敲敲代碼 一、什么是跨域? 1.什么是同源策略及其限制內(nèi)容? 同源策略是一種約定,它是瀏覽器最核心...
摘要:同源策略所謂同源是指協(xié)議,域名,端口均相同。同源策略是瀏覽器的一個(gè)安全功能,不同源的客戶端腳本在沒(méi)有明確授權(quán)的情況下,不能讀寫(xiě)對(duì)方資源。需注意的是由于同源策略的限制,所讀取的為跨域請(qǐng)求接口所在域的,而非當(dāng)前頁(yè)。 一、什么是跨域 1.URL解析 URL (Uniform Resource Locator )統(tǒng)一資源定位符(URL)是用于完整地描述Internet上網(wǎng)頁(yè)和其他資源的地址的...
閱讀 1557·2021-11-17 09:33
閱讀 1106·2021-11-12 10:36
閱讀 2419·2019-08-30 15:54
閱讀 2443·2019-08-30 13:14
閱讀 2918·2019-08-26 14:05
閱讀 3294·2019-08-26 11:32
閱讀 3006·2019-08-26 10:09
閱讀 3001·2019-08-26 10:09