diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:40:17 -0500 |
commit | 33058f2b292b3a581333bdfb21b8f671898c5060 (patch) | |
tree | 51c3e392513ec574331b2d3f85c394445ea803c6 /files/zh-cn/web/http/cors | |
parent | 8b66d724f7caf0157093fb09cfec8fbd0c6ad50a (diff) | |
download | translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.gz translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.tar.bz2 translated-content-33058f2b292b3a581333bdfb21b8f671898c5060.zip |
initial commit
Diffstat (limited to 'files/zh-cn/web/http/cors')
13 files changed, 455 insertions, 0 deletions
diff --git a/files/zh-cn/web/http/cors/errors/corsalloworiginnotmatchingorigin/index.html b/files/zh-cn/web/http/cors/errors/corsalloworiginnotmatchingorigin/index.html new file mode 100644 index 0000000000..ce85096ae3 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsalloworiginnotmatchingorigin/index.html @@ -0,0 +1,35 @@ +--- +title: 原因:CORS 头 'Access-Control-Allow-Origin'与'xyz'不匹配 +slug: Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin +translation_of: Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因:CORS 头 'Access-Control-Allow-Origin'与'xyz'不匹配</pre> + +<h2 id="出了什么问题">出了什么问题?</h2> + +<p>简而言之,发出请求的原点与 {{HTTPHeader("Access-Control-Allow-Origin")}} 标题允许的任何来源都不匹配。</p> + +<p>如果响应包含多个 <code>Access-Control-Allow-Origin</code> 标头,也会发生此错误。</p> + +<p>如果您的代码使用CORS请求访问的服务在您的控制之下,请确保将其配置为将其来源包含在其 <code>Access-Control-Allow-Origin</code> 标头中,并且响应中仅包含一个此类标头。 标题本身接受逗号描述的起源列表,因此添加新的起源并不困难。</p> + +<p>例如,在Apache中,将以下行添加到服务器的配置中(在相应的 <code><Directory></code>,<code><Location></code>,<code><Files></code> 或 <code><VirtualHost></code> 部分中)。 配置通常位于 <code>.conf</code> 文件中(<code>httpd.conf</code> 和 <code>apache.conf</code> 是这些文件的通用名称),或者位于 <code>.htaccess</code> 文件中。</p> + +<pre>Header set Access-Control-Allow-Origin '<em>origin-list</em>'</pre> + +<p>在 Nginx 中,对应的配置为:</p> + +<pre>add_header 'Access-Control-Allow-Origin' '<em>origin-list</em>'</pre> + +<h2 id="查看更多">查看更多</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS 错误</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS 介绍</a></li> + <li><a href="https://enable-cors.org/server.html">开启 CORS: 我希望在自己的服务器上添加对 CORS 的支持</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsdidnotsucceed/index.html b/files/zh-cn/web/http/cors/errors/corsdidnotsucceed/index.html new file mode 100644 index 0000000000..fa3844fa44 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsdidnotsucceed/index.html @@ -0,0 +1,30 @@ +--- +title: 'Reason: CORS request did not succeed' +slug: Web/HTTP/CORS/Errors/CORSDidNotSucceed +tags: + - CORS + - HTTP + - 原因 + - 安全 + - 错误 +translation_of: Web/HTTP/CORS/Errors/CORSDidNotSucceed +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因: CORS 请求未成功</pre> + +<h2 id="哪里错了?">哪里错了?</h2> + +<p>使用CORS的{{Glossary("HTTP")}} 请求失败,因为HTTP连接在网络或协议级别失败。该错误与CORS没有直接关系,而是某种基本的网络错误。很多情况下,它是某个浏览器插件(比如广告拦截或隐私保护插件)阻止了请求而引起的。</p> + +<h2 id="参见">参见</h2> + +<ul> + <li><a href="/zh-cn/docs/Web/HTTP/CORS/Errors">HTTP访问控制(CORS)错误</a></li> + <li>词汇: {{Glossary("CORS")}}</li> + <li> + <p><a href="/zh-CN/docs/Web/HTTP/Access_control_CORS">HTTP访问控制(CORS)</a></p> + </li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsdisabled/index.html b/files/zh-cn/web/http/cors/errors/corsdisabled/index.html new file mode 100644 index 0000000000..7d62602cb9 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsdisabled/index.html @@ -0,0 +1,26 @@ +--- +title: 'Reason: CORS disabled' +slug: Web/HTTP/CORS/Errors/CORSDisabled +translation_of: Web/HTTP/CORS/Errors/CORSDisabled +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因:CROS被禁用</pre> + +<h2 id="哪里错了?">哪里错了?</h2> + +<p>发送了一个需要使用{{Glossary("CORS")}}的请求,但在用户的浏览器中禁用了CORS。发生这种情况时,用户需要在浏览器中重新打开CORS。</p> + +<p>在Firefox中,禁用CORS的首选项是<code>content.cors.disable</code>。将此设置为<code>true</code>将禁用CORS,因此在这种情况下,CORS请求将始终因此错误而失败。</p> + +<h2 id="参见">参见</h2> + +<ul> + <li><a href="/zh-cn/docs/Web/HTTP/CORS/Errors">HTTP访问控制(CORS)错误</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li> + <p><a href="/zh-CN/docs/Web/HTTP/Access_control_CORS">HTTP访问控制(CORS)</a></p> + </li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsexternalredirectnotallowed/index.html b/files/zh-cn/web/http/cors/errors/corsexternalredirectnotallowed/index.html new file mode 100644 index 0000000000..cacd2b8ce9 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsexternalredirectnotallowed/index.html @@ -0,0 +1,28 @@ +--- +title: 'Reason: CORS request external redirect not allowed' +slug: Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed +translation_of: Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因: CORS不允许请求外部重定向</pre> + +<h2 id="哪里错了?">哪里错了?</h2> + +<p>{{Glossary("CORS")}} 请求被服务器响应了一个HTTP重定向到与原始请求的Origin不同的URL上,这在CORS请求中是不允许的。</p> + +<p>例如,如果请求 <code>https://service.tld/fetchdata</code> ,但服务器的HTTP响应是 "301 永久移动", "307 暂时重定向",或 "308 永久重定向" 并且 <code>Location</code> 是<code>https://anotherservice.net/getdata</code>,那么CORS请求将会失败。</p> + +<p>要解决此问题,请更新代码以使用重定向报告的新URL,从而避免重定向。</p> + +<h2 id="参见">参见</h2> + +<ul> + <li><a href="/zh-cn/docs/Web/HTTP/CORS/Errors">HTTP访问控制(CORS)错误</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li> + <p><a href="/zh-CN/docs/Web/HTTP/Access_control_CORS">HTTP访问控制(CORS)</a></p> + </li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsmethodnotfound/index.html b/files/zh-cn/web/http/cors/errors/corsmethodnotfound/index.html new file mode 100644 index 0000000000..b91a4ca628 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsmethodnotfound/index.html @@ -0,0 +1,33 @@ +--- +title: 'Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’' +slug: Web/HTTP/CORS/Errors/CORSMethodNotFound +translation_of: Web/HTTP/CORS/Errors/CORSMethodNotFound +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因:在 CORS 头 ‘Access-Control-Allow-Methods’ 中没有找到方法</pre> + +<h2 id="哪里错了?">哪里错了?</h2> + +<p>{{Glossary("CORS")}} 请求使用的 HTTP 方法不包含在响应的 {{HTTPHeader("Access-Control-Allow-Methods")}} 头指定的方法列表中。此头指定了一个使用逗号分隔的 HTTP 方法列表,当使用 CORS 访问请求中指定的 URL 时,可以使用这些方法;如果请求使用任何其他方法,则会发生此错误。</p> + +<p>例如,如果响应中包含:</p> + +<pre>Access-Control-Allow-Methods: GET,HEAD,POST</pre> + +<p>尝试使用 {{HTTPMethod("PUT")}} 请求会因为这个错误失败。</p> + +<p>请确保当访问服务时你的代码只使用了允许的 HTTP 方法。</p> + +<p><strong>说明:</strong>如果服务器的 <code>Access-Control-Allow-methods</code> 头中包含任何未识别的或未定义的方法名称,会出现不同的错误:<code><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowMethod">Reason: invalid token 'xyz' in CORS header 'Access-Control-Allow-Methods</a>'</code>.</p> + +<h2 id="相关内容">相关内容</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> + <li><a href="/en-US/docs/Web/HTTP/Methods">HTTP request methods</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsmissingalloworigin/index.html b/files/zh-cn/web/http/cors/errors/corsmissingalloworigin/index.html new file mode 100644 index 0000000000..9be945f1f4 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsmissingalloworigin/index.html @@ -0,0 +1,51 @@ +--- +title: 'Reason: CORS header ''Access-Control-Allow-Origin'' missing' +slug: Web/HTTP/CORS/Errors/CORSMissingAllowOrigin +tags: + - CORS + - Cross-Origin + - HTTP +translation_of: Web/HTTP/CORS/Errors/CORSMissingAllowOrigin +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因:缺少CORS “Access-Control-Allow-Origin”</pre> + +<h2 id="哪里出错了">哪里出错了?</h2> + +<p>对 {{Glossary("CORS")}} 请求的响应缺少必需的{{HTTPHeader("Access-Control-Allow-Origin")}}头,其用于确定在当前源内操作的资源是否可以访问。</p> + +<p>如果服务器在您的控制之下,请将请求站点的源添加到允许访问的域集,方法是将其添加到<code>Access-Control-Allow-Origin</code>头的值。</p> + +<p>例如,要允许https://amazing.site上的站点使用CORS访问资源,这个http头应该为:</p> + +<pre>Access-Control-Allow-Origin: https://amazing.site +</pre> + +<p>您还可以使用<code>"*"</code>通配符配置站点使得允许任何站点访问它。您应该只将它用于公共的API。私有API永远不应使用<code>"*"</code>,而应设置特定的一个域或一些域。此外,通配符仅适用于将{{htmlattrxref("crossorigin")}} 属性设置为<code>"c"</code>的请求。</p> + +<pre>Access-Control-Allow-Origin: *</pre> + +<div class="warning"> +<p><strong>警告:</strong> 使用通配符允许所有站点访问私有API是显而易见的坏主意。</p> +</div> + +<p>例如,在Apache服务器中,将下面一行添加到服务器的配置中(在相应的<Directory>,<Location>,<Files>或<VirtualHost>部分中)。 配置通常位于.conf文件中(httpd.conf和apache.conf是这些文件的通用名称),或者位于<code>.htaccess</code>文件中。</p> + +<pre>Header set Access-Control-Allow-Origin '<em>origin-list</em>' +</pre> + +<p>对于Nginx,设置此http头的命令是:</p> + +<pre>add_header 'Access-Control-Allow-Origin' '<em>origin-list</em>' +</pre> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsmultiplealloworiginnotallowed/index.html b/files/zh-cn/web/http/cors/errors/corsmultiplealloworiginnotallowed/index.html new file mode 100644 index 0000000000..596e98877d --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsmultiplealloworiginnotallowed/index.html @@ -0,0 +1,25 @@ +--- +title: 'Reason: Multiple CORS header ''Access-Control-Allow-Origin'' not allowed' +slug: Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed +translation_of: Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因: 不允许出现多个 ‘Access-Control-Allow-Origin’ CORS 头信息。</pre> + +<h2 id="为什么会出现该问题">为什么会出现该问题?</h2> + +<p>服务器返回了超过一个 {{HTTPHeader("Access-Control-Allow-Origin")}} 标头信息,因此被认为是错误的。</p> + +<p>如果您正在管理该服务,请改正只返回一个 <code>Access-Control-Allow-Origin</code> 标头信息。同时需要注意,服务器返回的 <code>Access-Control-Allow-Origin</code> 值不应该是一个列表,因为浏览器只会接受一个值,并且不能为空。</p> + +<h2 id="查看更多">查看更多</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS </a>错误</li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS </a>介绍</li> + <li><a href="https://enable-cors.org/server.html">启用 CORS: 我想让自己的服务支持 CORS</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsnotsupportingcredentials/index.html b/files/zh-cn/web/http/cors/errors/corsnotsupportingcredentials/index.html new file mode 100644 index 0000000000..4ace9a4ac3 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsnotsupportingcredentials/index.html @@ -0,0 +1,34 @@ +--- +title: >- + Reason: Credential is not supported if the CORS header + ‘Access-Control-Allow-Origin’ is ‘*’ +slug: Web/HTTP/CORS/Errors/CORSNotSupportingCredentials +translation_of: Web/HTTP/CORS/Errors/CORSNotSupportingCredentials +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">在CORS中,Credential不接受http响应首部中的‘Access-Control-Allow-Origin’设置为通配符‘*’</pre> + +<h2 id="出了什么问题?">出了什么问题?</h2> + +<p>{{Glossary("CORS")}} 请求发出时,已经设定了credentials,但服务端配置了http响应首部 {{HTTPHeader("Access-Control-Allow-Origin")}} 的值为通配符 (<code>"*"</code>) ,而这与使用credentials相悖。</p> + +<p>要在客户端改正这个问题,只需要确保发出 CORS 请求时将credential设置为false。</p> + +<ul> + <li>如果使用 {{domxref("XMLHttpRequest")}} 发出请求,确保未将 {{domxref("XMLHttpRequest.withCredentials", "withCredentials")}} 设置为 <code>true。</code></li> + <li>如果使用 <a href="/en-US/docs/Web/API/Server-sent_events">Server-sent events</a>, 确保 {{domxref("EventSource.withCredentials")}} 的值为 <code>false</code> (false为默认值)。</li> + <li>如果使用 <a href="/en-US/docs/Web/API/Fetch_API">Fetch API</a>,确保 {{domxref("Request.credentials")}} 的值为 <code>"omit"</code>.</li> +</ul> + +<p>如果还不成功,则需要修改服务端,可能需要修改 <code>Access-Control-Allow-Origin</code> 的值,来为客户端所能够加载资源的源予以授权。</p> + +<h2 id="另请参见">另请参见</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>术语: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsoriginheadernotadded/index.html b/files/zh-cn/web/http/cors/errors/corsoriginheadernotadded/index.html new file mode 100644 index 0000000000..e3e3587c0f --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsoriginheadernotadded/index.html @@ -0,0 +1,26 @@ +--- +title: 'Reason: CORS header ‘Origin’ cannot be added' +slug: Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded +translation_of: Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因:没有添加头字段‘Origin’</pre> + +<h2 id="哪里错了">哪里错了?</h2> + +<p> {{Glossary("user agent")}} 不能把 {{HTTPHeader("Origin")}} 头字段添加到 {{Glossary("HTTP")}} 请求中。 所有的 CORS 请求必须有 <code>Origin</code> 头字段。</p> + +<p>例如,如果JavaScript代码以增强的权限运行,允许它访问多个域名的内容,则会发生这种情况。</p> + +<h2 id="参见">参见</h2> + +<ul> + <li><a href="/zh-cn/docs/Web/HTTP/CORS/Errors">HTTP访问控制(CORS)错误</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li> + <p><a href="/zh-CN/docs/Web/HTTP/Access_control_CORS">HTTP访问控制(CORS)</a></p> + </li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corspreflightdidnotsucceed/index.html b/files/zh-cn/web/http/cors/errors/corspreflightdidnotsucceed/index.html new file mode 100644 index 0000000000..760c5a0199 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corspreflightdidnotsucceed/index.html @@ -0,0 +1,27 @@ +--- +title: 'Reason: CORS preflight channel did not succeed' +slug: Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed +translation_of: Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed +--- +<div>{{HTTPSidebar}}</div> + +<h2 id="Reason">Reason</h2> + +<pre class="syntaxbox">Reason: CORS preflight channel did not succeed</pre> + +<h2 id="What_went_wrong">What went wrong?</h2> + +<p>{{Glossary("CORS")}} 请求需要预校验,但是预校验请求失败。可能是由于下列几种原因导致:</p> + +<ul> + <li>一个跨域请求在先前已经进行过预校验,进行重复的校验是不被允许的。请确保你的代码每次连接只进行一次预校验。</li> + <li>预校验请求碰到了通常情况下不应该发生的网络问题。</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS 错误</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS 简介</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/corsrequestnothttp/index.html b/files/zh-cn/web/http/cors/errors/corsrequestnothttp/index.html new file mode 100644 index 0000000000..9618d6e0e0 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/corsrequestnothttp/index.html @@ -0,0 +1,36 @@ +--- +title: 原因:CORS 请求不是 HTTP +slug: Web/HTTP/CORS/Errors/CORSRequestNotHttp +tags: + - CORS + - 同源规则 + - 安全 + - 错误 +translation_of: Web/HTTP/CORS/Errors/CORSRequestNotHttp +--- +<p>{{HTTPSidebar}}</p> + +<h2 id="原因">原因</h2> + +<pre class="syntaxbox">原因: CORS 请求不是 HTTP</pre> + +<h2 id="哪里出错了?">哪里出错了?</h2> + +<p>{{Glossary("CORS")}} 请求只能使用 HTTPS URL 方案,但请求指定的 URL 可能是不同类型。这种情况经常发生在 URL 指定本地文件,例如使用了 <code>file:///</code> 的 URL。</p> + +<p>要解决此问题,请确保在发出涉及 CORS 的请求时使用 HTTPS URL,例如 {{domxref("XMLHttpRequest")}},<a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch</a> API,或 Web Fonts(<code>@font-face</code>),或 <a href="https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Tutorial/Using_textures_in_WebGL">WebGL 纹理</a>, 或 XSL 样式表。</p> + +<h3 id="自_Firefox_68_本地文件安全性的改变">自 Firefox 68 本地文件安全性的改变</h3> + +<p>当用户在 Firefox 67 或更早版本中使用 <code>file:///</code> URI 打开页面时,页面来源被定义为打开页面的目录。同一目录及其子目录中的资源均被视为具有相同的来源,符合 CORS 同源规则。</p> + +<p>为响应 <a href="https://www.mozilla.org/en-US/security/advisories/mfsa2019-21/#CVE-2019-11730">CVE-2019-11730</a>,Firefox 68 及更高版本中定义,使用 <code>file:///</code> URL 打开页面的来源唯一。 因此,同一目录或其子目录中的其他资源不再满足 CORS 同源规则。这个新的表现通过 <code>privacy.file_unique_origin</code> 这一首选项控制,默认启用。</p> + +<h2 id="参考">参考</h2> + +<ul> + <li><a href="/zh-CN/docs/Web/HTTP/CORS/Errors">CORS 错误</a></li> + <li>术语:{{Glossary("CORS")}}</li> + <li><a href="/zh-CN/docs/Web/HTTP/CORS">CORS 介绍</a></li> + <li><a href="/zh-CN/docs/Learn/Common_questions/What_is_a_URL">什么是 URL?</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/cors错误允许凭证/index.html b/files/zh-cn/web/http/cors/errors/cors错误允许凭证/index.html new file mode 100644 index 0000000000..9ba1f6b468 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/cors错误允许凭证/index.html @@ -0,0 +1,32 @@ +--- +title: 故:在CORS头Access-Control-Allow-Credentials中预期为true +slug: Web/HTTP/CORS/Errors/CORS错误允许凭证 +translation_of: Web/HTTP/CORS/Errors/CORSMIssingAllowCredentials +--- +<div></div> + +<h2 id="理由">理由</h2> + +<pre class="syntaxbox notranslate">故:在CORS头Access-Control-Allow-Credentials中预期设为true</pre> + +<h2 id="错在了哪儿?">错在了哪儿?</h2> + +<p> CORS请求要求服务器允许使用凭据,但是服务器的HTTPHeader:Access-Control-Allow-Credentials标头的值并没有设置为true 。</p> + +<p>想要在客户端解决此问题,请修改代码以不请求使用凭据:</p> + +<ul> + <li>如果要使用{{domxref(“ XMLHttpRequest”)}}发出请求,请确保没有将{{domxref(“ XMLHttpRequest.withCredentials”,“ withCredentials”)}}}设置为true。</li> + <li>如果使用 <a href="https://wiki.developer.mozilla.org/en-US/docs/Web/API/Server-sent_events">Server-sent events</a>,请确保{{domxref(“ EventSource.withCredentials”)}}为false(default)。</li> + <li>如果使用 <a href="https://wiki.developer.mozilla.org/en-US/docs/Web/API/Fetch_API">Fetch API</a>,请确保{{domxref(“ Request.credentials”)}}为“omit”。</li> +</ul> + +<p>想要通过更改服务器的配置来消除此错误,请调整服务器的配置以将Access-Control-Allow-Credentials标头的值设置为true。</p> + +<h2 id="更多">更多</h2> + +<ul> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS errors</a></li> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> +</ul> diff --git a/files/zh-cn/web/http/cors/errors/index.html b/files/zh-cn/web/http/cors/errors/index.html new file mode 100644 index 0000000000..67710ad510 --- /dev/null +++ b/files/zh-cn/web/http/cors/errors/index.html @@ -0,0 +1,72 @@ +--- +title: CORS errors +slug: Web/HTTP/CORS/Errors +translation_of: Web/HTTP/CORS/Errors +--- +<div> +<p> </p> +</div> + +<div> </div> + +<div class="hidden"> +<p class="syntaxbox"><span class="seoSummary"><a href="/en-US/docs/Web/HTTP/CORS">Cross-Origin Resource Sharing</a> ({{Glossary("CORS")}}) 是一种允许服务器放宽同源策略的标准。 这用于明确允许一些跨源请求,同时拒绝其他请求。 例如,如果站点提供外界嵌入的服务,则可能需要放宽同源策略(<a href="/en-US/docs/Web/Security/Same-origin_policy">same-origin policy</a>)。 设置这样的CORS配置并不一定容易,并且可能存在一些挑战。 在这些页面中,我们将研究一些常见的CORS错误消息以及如何解决它们。</span></p> +</div> + +<p>如果未正确设置CORS配置,浏览器控制台将显示错误,例如<code>"Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at $somesite"(</code>跨源请求已阻止:同源策略禁止在某些站点上读取远程资源”),表示请求因违反CORS安全性而被阻止规则。 但这可能不一定是设置错误。 因为用户的Web应用程序和远程外部服务可能故意禁止该请求。如果要使端点可用,则需要进行一些调试才能成功。</p> + +<h2 id="确定问题">确定问题</h2> + +<p>要了解CORS配置的基本问题,您需要找出哪个请求有问题以及原因。步骤如下:</p> + +<p> </p> + +<ol> + <li> 打开有问题的网站并打开开发者工具(<a href="/en-US/docs/Tools">Developer Tools</a>)。</li> + <li> 尝试重现失败的事务并检查控制台( <a href="/en-US/docs/Tools/Web_Console">console</a>)是否看到CORS违规错误消息。它可能看起来像这样:</li> +</ol> + +<p><img alt="Firefox console showing CORS error" src="https://mdn.mozillademos.org/files/16050/cors-error2.png"></p> + +<p>错误消息的文本将类似于以下内容:</p> + +<pre>Cross<span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body">-Origin Request Blocked: The Same Origin Policy disallows +reading the remote resource at <em>https://some-url-here</em>. (<em>Reason: +additional information here</em>).</span></span></span></pre> + +<div class="note"> +<p><span class="message-body-wrapper"><span class="message-flex-body"><span class="devtools-monospace message-body"><strong>注意:出于安全原因,JavaScript代码无法给出有关CORS请求出错的详细信息。 所有代码都知道发生了错误。 确定具体问题的唯一方法是查看浏览器的控制台以获取详细信息。</strong></span></span></span></p> +</div> + +<h2 id="CORS错误信息">CORS错误信息</h2> + +<p>当请求因CORS失败时,Firefox的控制台会在其控制台中显示消息。 错误文本的一部分是“原因”消息,它提供了对出错的更深入的了解。 消息的原因如下: </p> + +<ul> + <li><a href="/zh-CN/docs/Web/HTTP/CORS/Errors/CORSDisabled">原因:CROS被禁用</a></li> + <li><a href="/zh-CN/docs/Web/HTTP/CORS/Errors/CORSDidNotSucceed">原因:CROS请求未成功</a></li> + <li><a href="/zh-CN/docs/Web/HTTP/CORS/Errors/CORSOriginHeaderNotAdded">原因:CROS头字段“Origin”未被添加</a></li> + <li><a href="/zh-CN/docs/Web/HTTP/CORS/Errors/CORSExternalRedirectNotAllowed">原因:CORS不允许请求外部重定向</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSRequestNotHttp">Reason: CORS request not http</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowOrigin">Reason: CORS header ‘Access-Control-Allow-Origin’ missing</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSAllowOriginNotMatchingOrigin">Reason: CORS header ‘Access-Control-Allow-Origin’ does not match ‘xyz’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSNotSupportingCredentials">Reason: Credential is not supported if the CORS header ‘Access-Control-Allow-Origin’ is ‘*’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMethodNotFound">Reason: Did not find method in CORS header ‘Access-Control-Allow-Methods’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowCredentials">Reason: expected ‘true’ in CORS header ‘Access-Control-Allow-Credentials’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSPreflightDidNotSucceed">Reason: CORS preflight channel did not succeed</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowMethod">Reason: invalid token ‘xyz’ in CORS header ‘Access-Control-Allow-Methods’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSInvalidAllowHeader">Reason: invalid token ‘xyz’ in CORS header ‘Access-Control-Allow-Headers’</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMissingAllowHeaderFromPreflight">Reason: missing token ‘xyz’ in CORS header ‘Access-Control-Allow-Headers’ from CORS preflight channel</a></li> + <li><a href="/en-US/docs/Web/HTTP/CORS/Errors/CORSMultipleAllowOriginNotAllowed">Reason: Multiple CORS header ‘Access-Control-Allow-Origin’ not allowed</a></li> +</ul> + +<h2 id="参见">参见</h2> + +<ul> + <li>Glossary: {{Glossary("CORS")}}</li> + <li><a href="/en-US/docs/Web/HTTP/CORS">CORS introduction</a></li> + <li><a href="/en-US/docs/Web/HTTP/Server-Side_Access_Control">Server-side CORS settings</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_enabled_image">CORS enabled image</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_settings_attributes">CORS settings attributes</a></li> + <li><a href="https://www.test-cors.org">https://www.test-cors.org</a> – page to test CORS requests</li> +</ul> |