不多说了。大家都知道,为什么不能用国内的东西。。。
你看看,网盘关了,现在前端加速也关了。不知道其他几家还能撑多久?这种纯公益性的东西,估计流量费太贵了?
http://wangzhan.360.com/notice/detail4
- 感谢您一直以来给予网站卫士前端公共库的支持与厚爱!由于我们业务发展方向上的调整,经过网站卫士团队的考量协商,我们怀着万分遗憾的心情宣布网站卫士前端公共库从即日起停止提供服务。
-
- 已经使用网站卫士前端公共库的网站,需要将“常用前端公共库”所调用的资源转移至您的网站本地存储,我们的网站卫士服务将继续给您提供缓存加速服务。
-
- 使用网站卫士“Google公共库”或者“Google字体库”的网站,请替换我们的URL,直接调用谷歌官网URL即可。
-
- 我们会继续努力,为网站卫士的用户免费提供更优秀的网站安全防护与加速服务!
-
- 360网站卫士团队
我就说,怎么越来越卡的呢
MacOneNote启动的时候一直让输入密码,或者启动崩溃,可以试试以下办法:
XML/HTML代码
- 可能是缓存的问题。解决步骤如下:
- 1.删掉文件夹:~/Library/Containers/com.microsoft.onenote.mac
- 2.删掉文件夹:~/Library/Group\ Containers/UBF8T346G9.Office
- 3.在 Mac 中打开应用程序 -> 实用工具 -> 钥匙串访问,搜索“MicrosoftOffice”,删掉这些钥匙串。
- 4.重启电脑
- 5.打开 OneNote 重新登录账号。
可以做上面的尝试,参考资料:http://cn.onenotegem.com/24120352653838239064/mac-onenote
不过我现在不太用mac 上的onenote 了。因为没有本地存储。。。。
升级到macOS了,在使用libevent的时候,报这个错:kq_init: detected broken kqueue,导致代码无法使用。
网上查了一下,可以通过一个简单的设定:export EVENT_NOKQUEUE=1,不知道有没有后遗症!
目前这样已经可以使用了。
一般情况下,editor.md的上传图片功能已经够用了,提供了两种方式:本地上传和跨域上传,方式也很简单,跨域上传的话,则需要加callbackUrl的地址。参考:http://www.ipandao.com/editor.md/examples/image-upload.html 和 http://www.ipandao.com/editor.md/examples/image-cross-domain-upload.html。
不过我的问题和上面的不一样,因为我使用了PHP开发框架,那么在正常开发的过程中,表单提交都有csrf的验证。editor.md却没有这个功能,在官方的issue里有人提出了,可以通过设置uploadUrl来加入get参数。
嗯,理论上这样也OK。然而我使用的是YII2,在实际使用中,这个办法无效,原因是:
PHP代码
- public function validateCsrfToken($token = null)
- {
- $method = $this->getMethod();
-
- if (!$this->enableCsrfValidation || in_array($method, ['GET', 'HEAD', 'OPTIONS'], true)) {
- return true;
- }
-
- $trueToken = $this->loadCsrfToken();
-
- if ($token !== null) {
- return $this->validateCsrfTokenInternal($token, $trueToken);
- } else {
- return $this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)
- || $this->validateCsrfTokenInternal($this->getCsrfTokenFromHeader(), $trueToken);
- }
- }
看最后两个判断,只判断了POST和HEADER中有Csrf的情况,没有判断GET参数里的情况,如果你的项目已经趋向于稳定,不再随便升级Yii的版本,你可以在$this->validateCsrfTokenInternal($this->getBodyParam($this->csrfParam), $trueToken)加一行:
PHP代码
- || $this->validateCsrfTokenInternal($this->get($this->csrfParam),$trueToken)
即,允许从GET参数中获取 csrf的值。
然而,很多时间我们都会手贱去composer update,所以这个方法有点不太敢使用。最终,还是决定修改editor.md的插件,在image-dialog.js中加入几行:
JavaScript代码
- if (settings.crossDomainUpload)
- {
- action += "&callback=" + settings.uploadCallbackURL + "&dialog_id=editormd-image-dialog-" + guid;
- }
-
- var csrfToken = $('meta[name="csrf-token"]').attr('content');
- var csrfField = "";
- if (csrfToken) {
- var csrfParam = $('meta[name="csrf-param"]').attr('content');
- csrfField = "<input type='hidden' name='" + csrfParam + "' value='" + csrfToken + "' />";
- }
然后在下面的dialogContent里加入csrfField的内容,使之 变成:
JavaScript代码
- var dialogContent = ( (settings.imageUpload) ? "<form action=\"" + action +"\" target=\"" + iframeName + "\" method=\"post\" enctype=\"multipart/form-data\" class=\"" + classPrefix + "form\">" : "<div class=\"" + classPrefix + "form\">" ) +
- ( (settings.imageUpload) ? "<iframe name=\"" + iframeName + "\" id=\"" + iframeName + "\" guid=\"" + guid + "\"></iframe>" : "" ) +
- "<label>" + imageLang.url + "</label>" +
- "<input type=\"text\" data-url />" + (function(){
- return (settings.imageUpload) ? "<div class=\"" + classPrefix + "file-input\">" +
- "<input type=\"file\" name=\"" + classPrefix + "image-file\" accept=\"image/*\" />" +
- csrfField +
- "<input type=\"submit\" value=\"" + imageLang.uploadButton + "\" />" +
- "</div>" : "";
- })() +
- "<br/>" +
- "<label>" + imageLang.alt + "</label>" +
- "<input type=\"text\" value=\"" + selection + "\" data-alt />" +
- "<br/>" +
- "<label>" + imageLang.link + "</label>" +
- "<input type=\"text\" value=\"http://\" data-link />" +
- "<br/>" + csrfField +
- ( (settings.imageUpload) ? "</form>" : "</div>");
注意红字所在地方,其实就加了这个字段而已。再次提交图片上传的时候,不会再报400错误了。