<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>杂记 &#8211; 「马马虎虎」</title>
	<atom:link href="https://www.gek6.cn/category/other/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.gek6.cn</link>
	<description>极客蜗牛-开发效率很慢的...</description>
	<lastBuildDate>Sun, 28 Apr 2024 02:35:24 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.6.2</generator>

<image>
	<url>https://www.gek6.cn/wp-content/uploads/2021/12/20211205200322145-32x32.png</url>
	<title>杂记 &#8211; 「马马虎虎」</title>
	<link>https://www.gek6.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>MacOS 14.4.1 无法打开软件提示：i已损坏，无法打开。你应该将它移到废纸篓。</title>
		<link>https://www.gek6.cn/macos-14-4-1-%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e8%bd%af%e4%bb%b6%e6%8f%90%e7%a4%ba%ef%bc%9ai%e5%b7%b2%e6%8d%9f%e5%9d%8f%ef%bc%8c%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e3%80%82%e4%bd%a0%e5%ba%94/</link>
					<comments>https://www.gek6.cn/macos-14-4-1-%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e8%bd%af%e4%bb%b6%e6%8f%90%e7%a4%ba%ef%bc%9ai%e5%b7%b2%e6%8d%9f%e5%9d%8f%ef%bc%8c%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e3%80%82%e4%bd%a0%e5%ba%94/#respond</comments>
		
		<dc:creator><![CDATA[lane]]></dc:creator>
		<pubDate>Sun, 28 Apr 2024 02:35:24 +0000</pubDate>
				<category><![CDATA[杂记]]></category>
		<guid isPermaLink="false">https://www.gek6.cn/?p=211</guid>

					<description><![CDATA[先保证系统中 隐私与安全性中 允&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<p>先保证系统中<br />
隐私与安全性中 允许任何来源</p>
<pre><code>sudo spctl --master-disable</code></pre>
<p>完成后检查<br />
<img decoding="async" src="https://www.gek6.cn/wp-content/uploads/2024/04/1714271667214-300x76.jpg" alt="" /></p>
<p>接下来执行下面命令<br />
这里的路径是输入 <code>sudo xattr -cr </code>后在Finder中直接把应用拖拽到终端即可<br />
防止自己手动输入错误</p>
<pre><code>sudo xattr -cr /Applications/Navicat\ Premium.app</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gek6.cn/macos-14-4-1-%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e8%bd%af%e4%bb%b6%e6%8f%90%e7%a4%ba%ef%bc%9ai%e5%b7%b2%e6%8d%9f%e5%9d%8f%ef%bc%8c%e6%97%a0%e6%b3%95%e6%89%93%e5%bc%80%e3%80%82%e4%bd%a0%e5%ba%94/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Mac typora 设置七牛云图床</title>
		<link>https://www.gek6.cn/76/</link>
					<comments>https://www.gek6.cn/76/#respond</comments>
		
		<dc:creator><![CDATA[lane]]></dc:creator>
		<pubDate>Tue, 07 Dec 2021 09:14:50 +0000</pubDate>
				<category><![CDATA[杂记]]></category>
		<guid isPermaLink="false">https://www.gek6.cn/?p=76</guid>

					<description><![CDATA[Mac typora 设置七牛云&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<h2>Mac typora 设置七牛云图床</h2>
<h3>设置并下载插件-PicGo</h3>
<p><img decoding="async" src="//yb-markdown-img.gek6.cn/image-20211207165621431.png" alt="" /></p>
<h3>安装PicGo 后配置七牛云相关参数</h3>
<p><img decoding="async" src="http://yb-markdown-img.gek6.cn/image-20211207170024405.png" alt="" /></p>
<p><img decoding="async" src="http://yb-markdown-img.gek6.cn/image-20211207170920298.png" alt="" /></p>
<p><img decoding="async" src="http://yb-markdown-img.gek6.cn/image-20211207170920298.png" alt="" /></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gek6.cn/76/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>跨域 跨域 跨域</title>
		<link>https://www.gek6.cn/%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f/</link>
					<comments>https://www.gek6.cn/%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f/#respond</comments>
		
		<dc:creator><![CDATA[lane]]></dc:creator>
		<pubDate>Mon, 16 Nov 2020 11:53:19 +0000</pubDate>
				<category><![CDATA[H5]]></category>
		<category><![CDATA[杂记]]></category>
		<guid isPermaLink="false">https://www.gek6.cn/?p=61</guid>

					<description><![CDATA[跨域 再次重申： 跨域是浏览器行&#46;&#46;&#46;]]></description>
										<content:encoded><![CDATA[<h2>跨域</h2>
<h3>再次重申： 跨域是浏览器行为，不是服务器行为。</h3>
<p>实际上，请求已经到达服务器了，只不过在回来的时候被浏览器限制了。就像Python他可以进行抓取数据一样，不经过浏览器而发起请求是可以得到数据，想到通过Nginx的反向代理来解决跨域问题。</p>
<h4>代理</h4>
<p>所谓代理就是在我们和真实的服务器之间有一台代理服务器，我们所有的请求都是通过它来进行转接的。</p>
<h5>正向代理</h5>
<p>正向代理就是我们访问不了Google，但是我在国外有一台vps，它可以访问Google，我访问它，叫它访问Google后，把数据传给我。<br />
如图：<br />
<img decoding="async" src="https://thamiti-blog.oss-accelerate.aliyuncs.com/tuchuang/%E8%B7%A8%E5%9F%9F/proxy.jpeg" alt="" /></p>
<h5>反向代理</h5>
<p>大家都有过这样的经历，拨打10086客服电话，可能一个地区的10086客服有几个或者几十个，你永远都不需要关心在电话那头的是哪一个，叫什么，男的，还是女的，漂亮的还是帅气的，你都不关心，你关心的是你的问题能不能得到专业的解答，你只需要拨通了10086的总机号码，电话那头总会有人会回答你，只是有时慢有时快而已。那么这里的10086总机号码就是我们说的反向代理。客户不知道真正提供服务人的是谁。<br />
反向代理隐藏了真实的服务端，当我们请求 www.baidu.com 的时候，就像拨打10086一样，背后可能有成千上万台服务器为我们服务，但具体是哪一台，你不知道，也不需要知道，你只需要知道反向代理服务器是谁就好了，www.baidu.com 就是我们的反向代理服务器，反向代理服务器会帮我们把请求转发到真实的服务器那里去。Nginx就是性能非常好的反向代理服务器，用来做负载均衡。<br />
如图：<br />
<img decoding="async" src="https://thamiti-blog.oss-accelerate.aliyuncs.com/tuchuang/%E8%B7%A8%E5%9F%9F/verse-proxy.jpeg" alt="" /></p>
<h3>总结</h3>
<p>正向代理隐藏了真实的客户端。<br />
反向代理隐藏了真实的服务器。<br />
Nginx 就是一个很好的反向代理服务器，当然apache也可以实现此功能。<br />
windows下Apache配置参考这篇文章： Windows Apache服务器配置<br />
Nginx<br />
Nginx（发音同engine x）是一个 Web服务器，也可以用作反向代理，负载平衡器和 HTTP缓存。该软件由 Igor Sysoev 创建，并于2004年首次公开发布。同名公司成立于2011年，以提供支持。<br />
我在Windows下实现Nginx负载均衡提到过Windows下Nginx命令使用。<br />
Nginx 反向代理模块 proxy_pass<br />
proxy_pass 后面跟着一个 URL，用来将请求反向代理到 URL 参数指定的服务器上。例如我们上面例子中的 proxy_pass <a href="https://api.shanbay.com，则将匹配的请求反向代理到">https://api.shanbay.com，则将匹配的请求反向代理到</a> <a href="https://api.shanbay.com">https://api.shanbay.com</a>。<br />
通过在配置文件中增加proxy_pass 你的服务器ip,例如这里的扇贝服务器地址，就可以完成反向代理。</p>
<pre><code class="language-c">server {
        listen       80;
        server_name  localhost;
        ## 用户访问 localhost，则反向代理到https://api.shanbay.com
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass https://api.shanbay.com;
        }
}</code></pre>
<p>配置html以文件方式打开<br />
一般的情况下，我们的HTML文件时放置在Nginx服务器上面的，即通过输入 <a href="http://localhost/index.html">http://localhost/index.html</a> ，但是在前端进行调试的时候，我们可能是通过 使用 file:///E:/nginx/html/index.html 来打开HTML。服务器打开不是特别方便。<br />
而我们之所以要部署在服务器上，是想要使用浏览器自带的CORS头来解决跨域问题，如果不想把HTML放置在Nginx中，而想通过本地打开的方式来调试HTML，可以通过自己添加Access-Control-Allow-Origin等http头，但是我们的AJAX请求一定要加上http://127.0.0.1/request，而不能直接是 /request，于是将nginx.conf作如下配置：</p>
<pre><code class="language-c">location / {
    root   html;
    index  index.html index.htm;
    # 配置html以文件方式打开
    if ($request_method = &#039;POST&#039;) {
          add_header &#039;Access-Control-Allow-Origin&#039; *;
          add_header &#039;Access-Control-Allow-Credentials&#039; &#039;true&#039;;
          add_header &#039;Access-Control-Allow-Methods&#039; &#039;GET, POST, OPTIONS&#039;;
          add_header &#039;Access-Control-Allow-Headers&#039; &#039;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type&#039;;
      }
    if ($request_method = &#039;GET&#039;) {
          add_header &#039;Access-Control-Allow-Origin&#039; *;
          add_header &#039;Access-Control-Allow-Credentials&#039; &#039;true&#039;;
          add_header &#039;Access-Control-Allow-Methods&#039; &#039;GET, POST, OPTIONS&#039;;
          add_header &#039;Access-Control-Allow-Headers&#039; &#039;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type&#039;;
    }
    # 代理到8080端口
    proxy_pass        http://127.0.0.1:8080;

}</code></pre>
<p>处理DELETE和PUT跨域请求<br />
而现在我的后台是restful风格的接口，采用了delete和put方法，而上面的配置就无能为力了。<br />
可以通过增加对非简单请求的判断来解决DELETE和PUT跨域请求。<br />
非简单请求是那种对服务器有特殊要求的请求，比如请求方法是PUT或DELETE，或者Content-Type字段的类型是application/json。<br />
非简单请求的CORS请求，会在正式通信之前，增加一次HTTP查询请求，称为&quot;预检&quot;请求（preflight）。<br />
服务器收到&quot;预检&quot;请求以后，检查了Origin、Access-Control-Request-Method和Access-Control-Request-Headers字段以后，确认允许跨源请求，就可以做出回应。<br />
因此，为了使Nginx可以处理delete等非简单请求，Nginx需要作出相应的改变，更改配置如下</p>
<pre><code class="language-c">location / {
    # 完成浏览器的&quot;预检&quot;请求
        if ($request_method = &#039;OPTIONS&#039;) {
        add_header Access-Control-Allow-Origin *;
        add_header Access-Control-Allow-Credentials true;
        add_header Access-Control-Allow-Methods &#039;GET, POST, PUT, DELETE, OPTIONS&#039;;
        add_header &#039;Access-Control-Allow-Headers&#039; &#039;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type&#039;;
        return 204;
        }
    # 配置html在本地打开
    if ($request_method = &#039;POST&#039;) {
          add_header &#039;Access-Control-Allow-Origin&#039; *;
          add_header &#039;Access-Control-Allow-Credentials&#039; &#039;true&#039;;
          add_header &#039;Access-Control-Allow-Methods&#039; &#039;GET, POST, OPTIONS&#039;;
          add_header &#039;Access-Control-Allow-Headers&#039; &#039;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type&#039;;
      }
    if ($request_method = &#039;GET&#039;) {
          add_header &#039;Access-Control-Allow-Origin&#039; *;
          add_header &#039;Access-Control-Allow-Credentials&#039; &#039;true&#039;;
          add_header &#039;Access-Control-Allow-Methods&#039; &#039;GET, POST, OPTIONS&#039;;
          add_header &#039;Access-Control-Allow-Headers&#039; &#039;DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type&#039;;
    }
    root   html;
    index  index.html index.htm;
    # 配置html在Nginx中打开
    location ~* \.(html|htm)$ {

        }
    # 代理到8080端口
    proxy_pass        http://127.0.0.1:8080;

}</code></pre>
<p>我们还必须把我们的html代码放在Nginx中html文件夹内，即使用Nginx当做我们的前端服务器。<br />
URL重写<br />
有时候我们仅仅只想将/api下的url反向代理到后端，可以通过在nginx.conf中配置url重写规则如下：</p>
<pre><code class="language-c">location / {
    root   html;
    index  index.html index.htm;
         location ^~ /api {
         rewrite ^/api/(.*)$ /$1 break;
         proxy_pass https://api.shanbay.com/;
         }
    }</code></pre>
<p>这样的话，我们只用处理/api下的url。<br />
在配置文件中我们通过rewrite将URL重写为真正要请求的URL，通过proxy_pass代理到真实的服务器IP或者域名。<br />
Cookie<br />
如果Cookie的域名部分与当前页面的域名不匹配就无法写入。所以如果请求 www.a.com ，服务器 proxy_pass 到 www.b.com 域名，然后 www.b.com 输出 domian=b.com 的 Cookie，前端的页面依然停留在 www.a.com 上，于是浏览器就无法将 Cookie 写入。<br />
可在nginx反向代理中设置：</p>
<pre><code class="language-c">location / {
    # 页面地址是a.com，但是要用b.com的cookie
    proxy_cookie_domain b.com a.com;  #注意别写错位置了 proxy_cookie_path / /;
    proxy_pass http://b.com;
}  </code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.gek6.cn/%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f-%e8%b7%a8%e5%9f%9f/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
