美高梅4858官方网站|美高梅4858mgm博客-分享、记录生活的点滴 / zh-CN Tue, 17 Mar 2020 10:43:58 +0800 Tue, 17 Mar 2020 10:43:58 +0800 Ajax 跨域请求 Cookie 无法携带/保存的解决办法 /js/902.html /js/902.html Tue, 17 Mar 2020 10:43:58 +0800 Chuwen 服务器端设置

Nginx 端设置:

http://192.168.3.4 是允许跨域的域名,80和443 可以不用加端口号,除此之外的端口号要加
add_header 'Access-Control-Allow-Origin' 'http://192.168.3.4';
add_header 'Access-Control-Allow-Credentials' 'true';

PHP 端设置:

说明同上
header("Access-Control-Allow-Origin: http://192.168.3.4");
header("Access-Control-Allow-Credentials: true");

前端设置

jQuery Ajax 请求:

$.ajax({
    url: 'http://nas/api/v2/sync/maindata',
    xhrFields: {
        // 允许携带证书
        withCredentials: true
    },
    dataType: 'json',
    success: function (res) {
        console.log("请求结果:"+res);
    }
});
]]>
0 /js/902.html#comments /feed/js/902.html
Nginx如何配置跨域(多个域名) /nginx/901.html /nginx/901.html Tue, 17 Mar 2020 10:41:56 +0800 Chuwen 设需要允许来源为 localhost*.example.com 下所有二级域名的访问,在 nginx 中只需要类似这样配置即可:
location / {
        set $match "";
        # 支撑http及https
        if ($http_origin ~* 'https?://(localhost|.*\.example\.com)') {
        set $match "true";
        }
        
        if ($match = "true") {
            add_header Access-Control-Allow-Origin "$http_origin";
            add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            add_header Access-Control-Allow-Methods GET,POST,OPTIONS,DELETE;
            add_header Access-Control-Allow-Credentials true;
        }
        # 处理OPTIONS请求
        if ($request_method = 'OPTIONS') {
            return 204;
        }
    }
————————————————

原文链接:https://blog.csdn.net/moxiaomomo/article/details/82970004

]]>
0 /nginx/901.html#comments /feed/nginx/901.html
MDUI 实现右击菜单弹出菜单栏 /html5/897.html /html5/897.html Mon, 16 Mar 2020 23:09:00 +0800 Chuwen 更新记录
03/17 00:12:解决滚动页面后右击菜单栏出美高梅4858mgm顶部。解决办法将 e.clientY 换成 e.pageY

在线预览:/mdui/contextmenu.html

核心 美高梅4858mgm 代码:

    var $$ = mdui.JQ;
    //监听鼠标右击事件 / 移动端长按事件
    $$(document).on('contextmenu', function (e) {
        // console.log(e);

        //0:移动端长按(iOS 测试未通过)
        //2:电脑端右键
        if(e.button === 2 || e.button === 0) {
            e.preventDefault();//阻止冒泡,阻止默认的浏览器菜单

            //(修改了这里)鼠标点击位置,相对于页面
            var _x = e.pageX,
                _y = e.pageY;

            let $div = $$("<div></div>").css({
                position: 'absolute',
                top: _y+'px',
                left: _x+'px',
            });
            $$('body').append($div);//创建临时DOM

            // anchorSelector 表示触发菜单的元素的 CSS 选择器或 DOM 元素
            // menuSelector 表示菜单的 CSS 选择器或 DOM 元素
            // options 表示组件的配置参数,见下面的参数列表
            // 完整文档列表:https://doc.nowtime.cc/mdui/menu.html
            var inst = new mdui.Menu($div, '#menu');
            inst.open();//打开菜单栏
            $div.remove();//销毁创建的临时DOM
        }
    });

完整 HTML代码

[...]

]]>
0 /html5/897.html#comments /feed/html5/897.html
Curiosity's 1.8-Billion-Pixel Panorama /chat/895.html /chat/895.html Sun, 15 Mar 2020 14:28:00 +0800 Chuwen https://mars.nasa.gov/resources/24801/curiositys-18-billion-pixel-panorama/?site=insight

Downloads

Image File

82 MB

image/jpeg

Download


M34 (Medium Angle): 29164 x 8592

717 MB

image/tiff

Download


M100 (Telephoto): 88797 x 22958; 2.25 GB; image/tiff

Download

]]>
0 /chat/895.html#comments /feed/chat/895.html
各大图床 API /trick/892.html /trick/892.html Mon, 24 Feb 2020 13:07:38 +0800 Chuwen 百度
//百度識圖的接口
func UploadToBaidu(img []byte, imgInfo string) string {
    body := new(bytes.Buffer)
    w := multipart.NewWriter(body)
    contentType := w.FormDataContentType()
    name := utils.GetFileNameByMimeType(imgInfo)
    file, _ := w.CreateFormFile("Filedata", name)
    _, _ = file.Write(img)
    _ = w.WriteField("file", "multipart")
    _ = w.Close()
    req, _ := http.NewRequest("POST", "https://api.uomg.com/api/image.baidu", body)
    req.Header.Set("Content-Type", contentType)
    resp, _ := http.DefaultClient.Do(req)
    defer resp.Body.Close()
    data, _ := ioutil.ReadAll(resp.Body)
    baidu := bed.BaiduResp{}
    err := json.Unmarshal([]byte(string(data)), &baidu)
    if err != nil {
        logging.AppLogger.Error("Upload To Baidu fail", zap.Error(err))
        return ""
    }
    return string(baidu.ImgUrl)
}

奇虎360(Qihoo)

func UploadToQihoo(img []byte, imgInfo string, imgType string) string {
    url := "http://st.so.com/stu"
    name := utils.GetFileNameByMimeType(imgInfo)

    file := &utils.FormFile{
        Name:  name,
        Key:   "upload",
        Value: img,
        Type:  imgType,
    }
    var header map[string]string
    data := utils.FormPost(file, url, header)
    var re = regexp.MustCompile(`(?m)data-imgkey="(.*)"`)
    imgKey := re.FindAllStringSubmatch(data, -1)[0][1]
    url = "https://ps.ssl.qhmsg.com/" + imgKey
    return url
}

网易严选(NetEasy)

func UploadToNetEasy(img []byte, imgInfo string, imgType string) string {
    url := "http://you.163.com/xhr/file/upload.json"
    name := utils.GetFileNameByMimeType(imgInfo)

    file := &utils.FormFile{
        Name:  name,
        Key:   "file",
        Value: img,
        Type:  imgType,
    }
    var header map[string]string
    data := utils.FormPost(file, url, header)
    netEasy := bed.NetEasyResp{}

    _ = json.Unmarshal([]byte(data), &netEasy)
    return netEasy.Data[0]
}

京东(JD)

func UploadToJd(img []byte, imgInfo string, imgType string) string {
    url := "https://search.jd.com/image?op=upload"
    name := utils.GetFileNameByMimeType(imgInfo)

    file := &utils.FormFile{
        Name:  name,
        Key:   "file",
        Value: img,
        Type:  imgType,
    }
    var header map[string]string
    data := utils.FormPost(file, url, header)
    var pre = regexp.MustCompile(`(?m)ERROR`)

    if !pre.MatchString(data) {
        var re = regexp.MustCompile(`(?m)\("(.*)"\)`)
        imgFix := re.FindAllStringSubmatch(data, -1)[0][1]
        url = "https://img" + strconv.Itoa(rand.Intn(3)+11) + ".360buyimg.com/img/" + imgFix
        return url
    } else {
        return ""
    }

}

掘金(JueJin)

func UploadToJueJin(img []byte, imgInfo string, imgType string) string {
    url := "https://cdn-ms.juejin.im/v1/upload?bucket=gold-user-assets"
    name := utils.GetFileNameByMimeType(imgInfo)

    file := &utils.FormFile{
        Name:  name,
        Key:   "file",
        Value: img,
        Type:  imgType,
    }
    var header map[string]string
    data := utils.FormPost(file, url, header)
    juejin := bed.JueJinResp{}
    _ = json.Unmarshal([]byte(data), &juejin)

    //神奇三斷言 : )
    reJ, _ := juejin.D.(map[string]interface{})
    urls, _ := reJ["url"].(map[string]interface{})
    httpUrl, _ := urls["https"].(string)
    return httpUrl
}

阿里(Ali)

func UploadToAli(img []byte, imgInfo string, imgType string) string {
    url := "https://kfupload.alibaba.com/mupload"
    name := utils.GetFileNameByMimeType(imgInfo)

    file := &utils.FormFile{
        Name:  name,
        Key:   "file",
        Value: img,
        Type:  imgType,
    }
    //var header map[string]string
    data := utils.AliFormPost(file, url)
    ali := bed.AliResp{}
    _ = json.Unmarshal([]byte(data), &ali)
    return ali.Url
}
]]>
0 /trick/892.html#comments /feed/trick/892.html
[2020年] 修复 Windows10 计算机上的 BAD SYSTEM CONFIG INFO 错误 /windows/891.html /windows/891.html Thu, 20 Feb 2020 21:16:00 +0800 Chuwen 有2种解决办法

1. 重装系统

2. 修复 Windows 注册表文件

当您进入欢迎屏幕以单击下一步,然后单击窗口左下角的修复计算机。然后单击 “疑难解答” > “高级选项” > “命令提示符”。
美高梅4858mgm,一旦打开命令提示符窗口,按照给出的顺序逐个实行以下命令:

CD C:\Windows\System32\config
ren C:\Windows\System32\config\DEFAULT DEFAULT.old
ren C:\Windows\System32\config\SAM SAM.old
ren C:\Windows\System32\config\SECURITY SECURITY.old
ren C:\Windows\System32\config\SOFTWARE SOFTWARE.old
ren C:\Windows\System32\config\SYSTEM SYSTEM.old

完成这些后,按给定的顺序逐个输入这些,按照给出的顺序逐个实行以下命令:

copy C:\Windows\System32\config\RegBack\DEFAULT C:\Windows\System32\config\
copy C:\Windows\System32\config\RegBack\SAM C:\Windows\System32\config\
copy C:\Windows\System32\config\RegBack\SECURITY C:\Windows\System32\config\
copy C:\Windows\System32\config\RegBack\SYSTEM C:\Windows\System32\config\
copy C:\Windows\System32\config\RegBack\SOFTWARE C:\Windows\System32\config\

最后,键入exit以关闭“命令提示符”窗口。然后重启即可

[...]

]]>
0 /windows/891.html#comments /feed/windows/891.html
2 行代码搞定给你的网页加 黑暗模式(夜间模式)开关 /js/883.html /js/883.html Sat, 15 Feb 2020 11:37:00 +0800 Chuwen Darkmode.Js
?黑暗模式/夜间模式,只需要几秒钟就可以给你的网站添加这个功能

美高梅4858已经添加,你可以看到网站左下方有个小按钮,你点击 Ta 预览以下效果吧!

该库使用 CSS mix-blend-mode 来将暗模式带入您的任何网站。只需复制粘贴该片段,您将获得一个小部件以打开和关闭暗模式。您也可以不使用窗口小部件而以编程方式使用它。该插件是轻量级的,内置于?? VanillaJS 中。默认情况下,它也使用 localstorage,因此您的上一次设置将被记住!

特点

  • 窗口小部件自动显示
  • 保存用户选择
  • 如果操作系统偏好的主题为深色,则自动显示Darkmode(如果浏览器支撑prefers-color-scheme)
  • 可以以编程方式使用而无需小部件

WordPress 插件

如果您使用的是 Wordpress,则可能需要看看基于 Darkmode.js 的这些插件:
  • https://wordpress.org/plugins/blackout-darkmode-widget/
  • https://wordpress.org/plugins/darkmode/

简单方法(使用JSDelivr CDN)

只需将此代码添加到您的 html 页面:

<script src="https://cdn.jsdelivr.net/npm/darkmode-js@1.5.5/lib/darkmode-js.min.js"></script>
<script>new Darkmode().showWidget();</script>

高级调用参数:

[...]

]]>
0 /js/883.html#comments /feed/js/883.html
PHP 解析抖音短视频无水印源码(非调用 Ta 人接口解析) /uncategorized/880.html /uncategorized/880.html Sat, 15 Feb 2020 11:27:42 +0800 Chuwen Gitee 地址(不是我写的):https://gitee.com/uxqq/dyapi

我已经部署好的(我自己做了改动):https://api.nowtime.cc/v1/douyin/videoParse?url=视频链接
例如:https://api.nowtime.cc/v1/douyin/videoParse?url=https://v.douyin.com/sD6Wyk

返回结果:

{
  "code": 200,
  "msg": "获取成功",
  "data": {
    "title": "马斯克Boring企业开发地下立体交通隧道,系统智能管理,将让无间隔跟车成为可能#马斯克 #boring隧道",
    "img": "https://p9-dy.byteimg.com/img/tos-cn-p-0015/ec7c7768c516479489f8e6d62435bf95_1581734295~c5_300x400.jpeg?from=2563711402_large",
    "videourl": "http://v5-dy.ixigua.com/0cdda091045c66f99f261844772abf9d/5e4773a0/video/tos/hxsy/tos-hxsy-ve-0015/7a26bfc1603340cd981e76bca7906a91/?a=1128&br=0&bt=507&cr=0&cs=0&dr=0&ds=6&er=&l=2020021511290501001203410423F11F5A&lr=&qs=0&rc=amx2c2RzNXlvczMzOmkzM0ApaTNnOWkzZGQ5NzM5OWc6M2dxXzAvNl4wZjBfLS0xLS9zcy9gYy1iMi82YTUwYDReYjA6Yw%3D%3D&vl=&vr="
  }
}

PHP 代码:

<?php
header('Access-Control-Allow-Origin:*');
header('Content-type:application/json; charset=utf-8');
error_reporting(0);
if(!array_key_exists('url',$_REQUEST))exit(error("缺少参数"));
$url =@$_REQUEST;
preg_match("/http:\/\/v.douyin.com\/\S+/",$url['url'],$res);
if (!$res)exit(error("请检查你输入的链接"));
function error($str){
    return json_encode([
        "code"=>-1,
        "msg"=>$str
    ],JSON_UNESCAPED_UNICODE);
}
function curl($url, $getinfo=false)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_NOBODY, false);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, false);
    curl_setopt($ch, CURLOPT_TIMEOUT, 3600);
    curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_AUTOREFERER, true);
    curl_setopt($ch, CURLOPT_ENCODING, '');
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (苹果; CPU 苹果 OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1'));
    if($getinfo){
        curl_exec($ch);
        $data = curl_getinfo($ch,CURLINFO_EFFECTIVE_URL);
    }else{
        $data = curl_exec($ch);
    }
    curl_close($ch);
    return $data;
}
preg_match_all("/itemId: \"([0-9]+)\"|dytk: \"(.*)\"/", curl($res[0]), $res, PREG_SET_ORDER);
if(!@$res[0][1] || !@$res[1][2])exit(error("数据异常"));
$arr = json_decode(curl("https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids={$res[0][1]}&dytk={$res[1][2]}"));
exit(json_encode([
    "code"=>1,
    "msg"=>"获取成功",
    "data"=>[
        'title'    => $arr->item_list[0]->desc,
        'img'      => $arr->item_list[0]->video->cover->url_list[0],
        'videourl' => curl($arr->item_list[0]->video->play_addr->url_list[0], true)
    ]
],JSON_UNESCAPED_UNICODE));
]]>
0 /uncategorized/880.html#comments /feed/uncategorized/880.html
Cloudreve 屏蔽 ThinkPHP 核心文件,防止被人恶意攻击 /php/879.html /php/879.html Thu, 13 Feb 2020 11:34:53 +0800 Chuwen 根据 ThinkPHP 的默认配置,index.php 入口文件本应在 public/index.php 的,但是 Cloudreve 直接将它移动到程序根目录,ThinkPHP 框架 的所有文件都暴露在公网下,如果 ThinkPHP 出现什么漏洞,攻击者可以直接对其进行攻击

为了避免这种,我想到了两种方法

一种是使用 Nginx URL重写(伪静态)进行屏蔽:

这里屏蔽掉了 ThinkPHP 核心文件及一些安装文件,保证其不会暴露在公网中
location ~ ^/(extend|application|thinkphp|CloudreveInstaller|vendor|extend)/*.*$
{
        return 404;
}

location ~ ^/(\.user.ini|\.htaccess|\.git|\.svn|\.project|LICENSE|README.md|composer.lock|mysql.sql|deploy.sh|composer.json)
{
        return 404;
}

另一种是将 index.php 移动到 public 下

这个移动之后有许多地方需要更改,我嫌麻烦,没去弄

]]>
0 /php/879.html#comments /feed/php/879.html
Linux 挂载的硬盘无实行权限(无法实行二进制文件) /linux/877.html /linux/877.html Wed, 12 Feb 2020 20:54:02 +0800 Chuwen 在网上找了好久,终于找到了原因

只要修改 /etc/fstab 即可。

/etc/fstab 文件内容,我的显示的是这个

UUID=815de787-e0fd-6666-b67c-126465662062 / ext4 defaults,noatime,nodiratime,commit=600,errors=remount-ro 0 1
tmpfs /tmp tmpfs defaults,nosuid 0 0
# >>> [openmediavault]
/dev/disk/by-label/WDC /srv/dev-disk-by-label-WDC ext4 defaults,nofail,user_xattr,noexec,usrjquota=aquota.user,grpjquota=aquota.group,jqfmt=vfsv0,acl 0 2
# <<< [openmediavault]

noexec(表示不允许实行二进制文件) 改成 exec 即可
Snipaste_2020-02-12_20-53-10.png

]]>
0 /linux/877.html#comments /feed/linux/877.html