發(fā)請(qǐng)求自動(dòng)帶上的
mdn cookie
防止XSRF最好的方式是使用CSRF-token。
cookie一般用于保存信息,你向同一個(gè)服務(wù)器發(fā)請(qǐng)求時(shí)會(huì)帶上瀏覽器保存的對(duì)于那個(gè)服務(wù)器的cookie,而不管你從哪個(gè)網(wǎng)站發(fā)請(qǐng)求。
所以后端需要設(shè)置Access-Control-Allow-Origin,瀏覽器會(huì)看你的訪問(wèn)網(wǎng)站是否是被允許的域,如果允許就發(fā)請(qǐng)求并能獲得數(shù)據(jù),如果不受允許那么能發(fā)請(qǐng)求但是js腳本無(wú)法獲取返回的數(shù)據(jù)(你仍然能在NetWork中看到返回)。
可以看下這篇文章
這個(gè)是 color scheme 的設(shè)置,需要自己在設(shè)置里找一找,換換不同的
打開(kāi)網(wǎng)頁(yè)檢查,如下圖
發(fā)現(xiàn)是Content-Disposition出錯(cuò)
接下來(lái),就針對(duì)這個(gè)屬性在網(wǎng)上搜集資料,解決步驟如下:
1、導(dǎo)入模塊
from django.utils.encoding import escape_uri_path
2、重寫該屬性
response['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(escape_uri_path(the_file_name))
注:其中BUG1和BUG2普通解決方案不是最佳解決途徑
from django.http import StreamingHttpResponse
# 切片讀取文件
def file_iterator(filename,chunk_size=512):
with open(filename,'rb') as f:
while True:
c=f.read(chunk_size)
if c:
yield c
else:
break
# 下載功能
def download_file(request):
the_file_name = models.FileObj.objects.get(id=request.GET.get("id")).fileName # 顯示在彈出對(duì)話框中的默認(rèn)的下載文件名
print(the_file_name)
file_path = os.path.join(file_dir,the_file_name) # 要下載的文件路徑
response = StreamingHttpResponse(file_iterator(file_path))
response['Content-Type'] = 'application/octet-stream' # #設(shè)定文件頭,這種設(shè)定可以讓任意文件都能正確下載,而且已知文本文件不是本地打開(kāi)
# response['Content-Disposition'] = 'attachment;filename="download.zip"' # BUG1:給出一個(gè)固定的文件名,且不能為中文,文件名寫死了
# response['Content-Disposition'] = 'attachment;filename={0}'.format(the_file_name.encode("utf-8")) # BUG2:中文會(huì)亂碼
response['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(escape_uri_path(the_file_name)) # 正確寫法
return response
正常下載zip文件的效果圖:
JWT 是不需要存服務(wù)端的,我也很奇怪為什么有人會(huì)把token存服務(wù)端。而且即使存服務(wù)端,也應(yīng)該當(dāng)成密碼一樣加密存儲(chǔ)。不然數(shù)據(jù)庫(kù)被 hack 里,token 就都拿到了,不用密碼就可以冒充用戶發(fā)請(qǐng)求了。
change事件就是發(fā)請(qǐng)求到后臺(tái),然后獲取數(shù)據(jù),將獲取到的數(shù)據(jù)賦值給你這個(gè)transfer的對(duì)應(yīng)的值就可以了啊。
不知道你想問(wèn)什么,處理什么?
建立兩個(gè)表的關(guān)系嗎?
const Script = require('../model/Script'), // Script--model
Project = require('../model/Project'); // Project--model
// 定義project & script兩個(gè)model間的關(guān)系
Script.belongsTo(Project);
Project.hasMany(Script);
input autofocus
將last_node打印出來(lái),你會(huì)發(fā)現(xiàn)并不是<span>標(biāo)簽,而是一個(gè)TextNode。
即標(biāo)簽<input>和<span>之間會(huì)有另一個(gè)元素,類型為TextNode,在操作的時(shí)候一定要注意。
再舉兩例吧。
這時(shí)獲取到的是 '111? ' 。
<span>姓名:</span>111
<input type="text" name="user_name" placeholder="此處填寫姓名"/>
這時(shí)獲取到的就是`<span>`標(biāo)簽。
<span>姓名:</span><input type="text" name="user_name" placeholder="此處填寫姓名"/>@會(huì)煮咖啡的貓 貓貓 這個(gè)數(shù)據(jù)怎么傳遞給服務(wù)器呢
Vue.component的作用是注冊(cè)全局組件,
所以可以直接import這個(gè)模塊
import '/path/to/components.js'
用法說(shuō)明:
僅為副作用而導(dǎo)入一個(gè)模塊
僅為模塊的副作用而導(dǎo)入一個(gè)模塊,而不導(dǎo)入模塊中的任何內(nèi)容。 這將運(yùn)行模塊中的全局代碼, 但實(shí)際上不導(dǎo)入任何值。
詳見(jiàn)MDN
一般推薦使用樓上的配置自動(dòng)注入, 可以實(shí)現(xiàn)單機(jī)、哨兵、集群的切換,然后使用@Autowrite RedisTemplate<Object, Object> template;注入
如果需要代碼配置可以參考:org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration
setState 只能更改最外層屬性的值。
你這種情況,需要自己手動(dòng)修改,然后重新賦值。
例如:
changeValue() {
const data = this.state.moreData.map(v => {
if (v.name === 'a') {
v.value = '10'
}
return v
});
this.setState({ moreData: data })
} legend: {
itemWidth:10,//柱子寬
itemHeight:10,//柱子高
},
data:[{
name:'直接訪問(wèn)',
textStyle:{
color:'#0f0',//文本顏色
}
},
{
name:'郵件營(yíng)銷',
textStyle:{
color:'#0f0',//文本顏色
}
},
{
name:'聯(lián)盟廣告',
textStyle:{
color:'#0f0',//文本顏色
}
}]
設(shè)置柱子寬高相等
對(duì)應(yīng)文本下的textStyle設(shè)置對(duì)應(yīng)柱子的顏色color就OK
在網(wǎng)上查找了一番,發(fā)現(xiàn)一個(gè)Speak.js的js插件能實(shí)現(xiàn)將內(nèi)容識(shí)別成語(yǔ)音并播放出來(lái),鏈接為:http://www.5imoban.net/jiaoch...
由于沒(méi)有具體使用過(guò),只能在此給你一些在vue中使用第三方插件的一些建議:
1、將第三方文件放到static目錄下的文件中,例如放在/static/js中
2、在main.js中引入(需要此插件支持import語(yǔ)法),import test from "/static/js/xxx.js"
3、注冊(cè)到vue原型上:Vue.prototype.$speak = test (這里的$speak可以自己取名)
4、在使用時(shí)通過(guò)this.$speak就可以拿到注冊(cè)到vue原型上的插件了
具體用法類似與我寫過(guò)的一篇文章: Vue中配合clipboard.js實(shí)現(xiàn)點(diǎn)擊按鈕復(fù)制內(nèi)容到剪切板
希望我的回答對(duì)你有所幫助!
主要看規(guī)定的接口文檔,如果是必傳參數(shù),不能缺,反之,無(wú)所謂
你的意思應(yīng)該是這樣吧
$parent.on('touch', '.child', function() {});
然后你刪除對(duì)應(yīng)dom再添加的時(shí)候事件會(huì)自動(dòng)加上
viewMch.vue
目錄結(jié)構(gòu)
viewMch.js該怎么寫就怎么寫
可以,epub格式,本質(zhì)上是一個(gè)zip壓縮包。只不過(guò)是這個(gè)壓縮包中有用xml格式的文件定義了一些數(shù)據(jù)。
你只需要知道epub的xml格式,之后用zip打包即可。
epub格式規(guī)范可以參考 : https://blog.csdn.net/ccwwff/...
首先你使用了 promise 的情況下不要再使用回調(diào)了. output 這個(gè)函數(shù)完全沒(méi)必要存在.
async function eachTest () {
let arr = []; // 這里定義一個(gè)需要的數(shù)組
for (let i = 0; i < 5; i++) {
arr.push(await timeout(1000));
}
return arr;
}
eachTest().then(function(res){
// 我需要在這里獲取上述的eachTest返回的數(shù)組,應(yīng)該怎么拿到?
console.log(res);
})你列出來(lái)的是兩個(gè)包,根據(jù)你的描述,你是不是按照第一個(gè)的文檔用的第二個(gè)包?
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。