cross-domain 相关问题

跨域是指在其托管域/ Web服务器之外进行通信的Web应用程序。这可以是对其他服务器的网络请求或与在同一网页上组成的不同域提供的DOM组件共享数据的形式。

Ajax 跨源请求被阻止:同源策略不允许读取远程资源

我正在编写一个简单的网站,它以习语作为输入,并从牛津词典返回其含义和示例。这是我的想法: 我向以下 URL 发送请求: http://www.

回答 12 投票 0

阻止来源为“http://localhost:8080”的框架访问来源为“http://pentaho5XXX.com”的框架

我花了大约两天时间尝试做一些我不知道该怎么做的事情。 问题是我正在定制 Pentaho 用户控制台(这是部署在 tomcat 上的某种 Web 应用程序,它...

回答 1 投票 0

未捕获的TypeError:无法读取null的属性(读取'postMessage'),跨源框架问题

我已经做了我的研究,我想我已经到达那里,但我只是不明白为什么我不断收到这个错误。 我有两个拥有不同域名的网站,我会说我可以

回答 1 投票 0

是否可以从浏览器发送 ipp 打印作业?

是否可以使用ajax从浏览器发送IPP打印请求? 我认为它看起来像这样: // 需要发送的数据 var data = "测试 测试 1 2 3"; // Jquery AJAX 校准...

回答 2 投票 0

在 ExpressJS 中禁用 CORS

我有两个nodeJS/express应用程序。为简单起见,我会说一个托管在 www.example1.com 上,另一个托管在 www.example2.com 上。我想从 www.example2.com 发送 POST 请求...

回答 1 投票 0

跨域属性的目的...?

在图像和脚本标签中。 我的理解是,您可以访问其他域上的脚本和图像。那么什么时候使用这个属性呢? 这是要限制能力的时候吗……

回答 5 投票 0

JQuery AJAX 调用 SOAP Web 服务 - 访问被拒绝。使用 SOAP UI 工作

JQuery AJAX 调用 SOAP Web 服务会引发“访问被拒绝”异常。请参阅屏幕截图。它正在 SOAP UI 中工作,因此 SOAP 请求似乎是正确的。请帮助发现问题并解决。 我的另一个...

回答 1 投票 0

子 iFrame 或弹出窗口的 HTTP 请求中缺少 HTTPOnly Cookies

浏览器 (Chrome) 不会从子 iframe 或弹出窗口设置 HttpOnly cookie 我有一个带有子 iframe 的父网页: 父级 https://sub1.some-domain.com 孩子在 <div> </div> <h3>浏览器 (Chrome) 不会从子 iframe 或弹出窗口设置 HttpOnly cookie</h3> <p>我有一个带有子 iframe 的父网页:</p> <pre><code>Parent at https://sub1.some-domain.com Child at &lt;iframe src=&#34;https://sub2.some-domain.com&#34;&gt; (inside of parent) </code></pre> <p>我从父级向 API 发出 <strong>POST</strong> 请求 <pre><code>https://api.some-domain.com</code></pre>。<br/> 以下是响应标头:</p> <pre><code>Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: https://sub1.some-domain.com Set-Cookie: payload-name=payload-value; max-age=30; domain=some-domain.com; path=/; secure; samesite=none; httponly </code></pre> <p>之后,<br/> 从 Iframe 我向“https://api.some-domain.com”发出 <strong>GET</strong> 请求。<br/> <strong>期望:</strong> 浏览器将 Httponly cookies <pre><code>payload-name=payload-value;</code></pre> 包含到请求中。</p> <p><strong>结果:</strong> 由于未知原因未包含 Httplonly cookie。<br/> <strong>顺便说一句</strong>,我在 JS Http 请求中包含了“<em>withCredentials</em>”属性,所以这不会是一个问题。</p> <p><strong>更新</strong></p> <p><em>获取请求:</em></p> <pre><code>fetch(&#34;https://api.some-domain.com/...&#34;, { &#34;headers&#34;: { &#34;accept&#34;: &#34;application/json&#34;, &#34;accept-language&#34;: &#34;en-US,en;q=0.9,uk;q=0.8&#34;, &#34;cache-control&#34;: &#34;no-cache&#34;, &#34;content-type&#34;: &#34;application/json&#34;, &#34;pragma&#34;: &#34;no-cache&#34;, &#34;sec-ch-ua&#34;: &#34;\&#34;Not/A)Brand\&#34;;v=\&#34;99\&#34;, \&#34;Google Chrome\&#34;;v=\&#34;115\&#34;, \&#34;Chromium\&#34;;v=\&#34;115\&#34;&#34;, &#34;sec-ch-ua-mobile&#34;: &#34;?0&#34;, &#34;sec-ch-ua-platform&#34;: &#34;\&#34;Windows\&#34;&#34;, &#34;sec-fetch-dest&#34;: &#34;empty&#34;, &#34;sec-fetch-mode&#34;: &#34;cors&#34;, &#34;sec-fetch-site&#34;: &#34;same-site&#34; }, &#34;referrer&#34;: &#34;https://sub2.some-domain.com/&#34;, &#34;referrerPolicy&#34;: &#34;strict-origin-when-cross-origin&#34;, &#34;body&#34;: null, &#34;method&#34;: &#34;GET&#34;, &#34;mode&#34;: &#34;cors&#34;, &#34;credentials&#34;: &#34;include&#34; }); </code></pre> <p><em>GET 响应标头:</em></p> <pre><code>Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: https://sub2.some-domain.com Cache-Control: no-store,no-cache Content-Encoding: gzip Content-Type: application/json; charset=utf-8 Pragma: no-cache </code></pre> <p><strong>更新2</strong><br/> 在本地,一切正常,包括 httponly cookie。 <br/> 我相信这个原因是<pre><code>https://api.some-domain.com</code></pre>,<pre><code>https://sub1.some-domain.com</code></pre>,<pre><code>https://sub2.some-domain.com</code></pre>是<pre><code>https://localhost</code></pre>。 <br/> <strong>更新3</strong><br/> 同样的问题是当弹出窗口而不是 iframe 时。</p> </question> <answer tick="false" vote="-1"> <h3>HttpOnly Cookie</h3> <p>HttpOnly 是网站可以指定的关于 cookie 的标志。换句话说,网络服务器告诉您的浏览器<em>“嘿,这是一个 cookie,您应该将其视为 HttpOnly”</em>。</p> JavaScript 无法访问 HttpOnly Cookie。只有浏览器知道它,并且它不会将其提供给页面中的 JavaScript 代码。乍一看,这听起来像是一个限制,但事实确实如此。然而,这样做的目的是我们不能信任 JavaScript 代码。攻击者可能会使用 JavaScript 来“窃取”我们存储在 cookie 中的身份验证令牌,然后使用我们的帐户访问网站。对于 HttpOnly cookie,这是不可能的。这使得<p>XSS 攻击<em>(我们刚刚描述的攻击)更难执行。</em> <strong>仅与 HttpOnly cookie 共享任何身份验证数据是公认的最佳实践。使用标准 cookie 进行身份验证是一个已知的漏洞,我们在任何情况下都应该避免。</strong> </p> <p>更多信息</p> <hr/><h3>设置-Cookie | MDN 开发者文档</h3><p> <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#httponly" rel="nofollow noreferrer"></a>仅 Http | OWASP 基金会</p><p> <a href="https://owasp.org/www-community/HttpOnly" rel="nofollow noreferrer"> </a>可能的解决方案</p> <hr/> <h3>将子域更改为与父域相同</h3> <ol>在子域上放置代理服务器,并将请求转发到正确的服务器。<li> </li>关闭 Cookie 的 HttpOnly。 [不推荐]<li> </li>使用<li>服务人员</li><li> <a href="https://stackoverflow.com/a/74355943/1072378"> </a> </li>1.安装一个服务工作者,其脚本由您的应用程序服务器呈现(例如,在 PHP 中)。在那里,您可以在闭包中输出 cookie,因此其他脚本甚至注入的函数都无法读取它们。尝试从其他用户代理加载相同的 URL 将不会获得 cookie,因此它是安全的。</ol> <blockquote>2.是的,服务工作人员会定期卸载,但每次再次加载时,由于#1,它都会有最新的 cookie。<p> </p>3.在服务器端代码响应渲染中,每次添加 Set-Cookie 标头时,也会添加具有相同内容的 Set-Cookie-JS 标头。让 Service Worker 拦截此响应,读取 cookie,并更新闭包中的私有对象。<p> </p>4.在“fetch”事件中,添加一个特殊的请求头,例如Cookie-JS,并传递本来应该在cookie中传递的内容。在将请求发送到服务器之前,将其添加到请求标头中。通过这种方式,您可以将所有“httponly”cookie 发送回服务器,而 Javascript 无法看到它们,即使实际的 cookie 被阻止!<p> </p>5.在您的服务器上,处理 Cookie-JS 标头并将其合并到您常用的 Cookie 机制中,然后像往常一样继续运行其余代码。<p> </p> <p> </p>使用 </blockquote>Chrome 扩展程序<ol start="5"><li> <a href="https://stackoverflow.com/a/39303460/1072378"> </a> </li> </ol>父级和 iframe 不被视为来自同一站点。即使它们共享相同的域,但它们具有不同的子域,并且它们被 cookie 的 SameSite 属性视为不同的“站点”。</answer> <answer tick="false" vote="-2">您的父页面位于 <p>https://sub1.some-domain.com</p>,您的 iframe 位于 <p>https://sub2.some-domain.com<a href="https://sub1.some-domain.com" rel="nofollow noreferrer">。由于 cookie 的 SameSite 属性设置为 None,因此 cookie 不会发送到 iframe,因为父页面和 iframe 被认为是不同的站点。</a> <a href="https://sub2.some-domain.com" rel="nofollow noreferrer">您可以尝试通过设置 </a><code>SameSite=None; Secure</code></p> 来更改 SameSite 属性,以允许跨站点发送 cookie,但只能通过安全连接发送。然而,这可能会导致 CSRF 漏洞。<p> <pre>另一种选择是使用 postMessage。您可以使用 </pre><code>window.postMessage</code></p> 跨窗口或 iframe 安全地发送消息,甚至在不同的域中也是如此。然后接收者窗口可以决定如何处理消息。<p> <pre>最后,您使用服务器端解决方案。您可以移动逻辑服务器端,而不是在客户端处理 cookie。这样您就无需担心浏览器阻止第三方 cookie。</pre> </p> <p></p>

回答 0 投票 0

跨域 cookie 身份验证在 IOS (.net 7) 上失败

我正在使用signalr来实现聊天服务。在聊天中提交表单时,它会命中一个控制器,该控制器对用户进行身份验证并添加一个 cookie,然后我使用该 cookie 通过信号器保持聊天状态......

回答 0 投票 0

子 iFrame 的 HTTP 请求中缺少 HTTPOnly Cookies

浏览器 (Chrome) 不会从子 iframe 设置 HttpOnly cookie 我有一个带有子 iframe 的父网页: 父级 https://sub1.some-domain.com 孩子在 <div> </div> <h3>浏览器 (Chrome) 不会从子 iframe 设置 HttpOnly cookie</h3> <p>我有一个带有子 iframe 的父网页:</p> <pre><code>Parent at https://sub1.some-domain.com Child at &lt;iframe src=&#34;https://sub2.some-domain.com&#34;&gt; (inside of parent) </code></pre> <p>我从父级向 API 发出 <strong>POST</strong> 请求 <pre><code>https://api.some-domain.com</code></pre>。<br/> 以下是响应标头:</p> <pre><code>Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: https://sub1.some-domain.com Set-Cookie: payload-name=payload-value; max-age=30; domain=some-domain.com; path=/; secure; samesite=none; httponly </code></pre> <p>之后,<br/> 从 Iframe 我向“https://api.some-domain.com”发出 <strong>GET</strong> 请求。<br/> <strong>期望:</strong> 浏览器将 Httponly cookies <pre><code>payload-name=payload-value;</code></pre> 包含到请求中。</p> <p><strong>结果:</strong> 由于未知原因未包含 Httplonly cookie。<br/> <strong>顺便说一句</strong>,我在 JS Http 请求中包含了“<em>withCredentials</em>”属性,所以这不会是一个问题。</p> <p><strong>附注</strong></p> <p><em>获取请求:</em></p> <pre><code>fetch(&#34;https://api.some-domain.com/...&#34;, { &#34;headers&#34;: { &#34;accept&#34;: &#34;application/json&#34;, &#34;accept-language&#34;: &#34;en-US,en;q=0.9,uk;q=0.8&#34;, &#34;cache-control&#34;: &#34;no-cache&#34;, &#34;content-type&#34;: &#34;application/json&#34;, &#34;pragma&#34;: &#34;no-cache&#34;, &#34;sec-ch-ua&#34;: &#34;\&#34;Not/A)Brand\&#34;;v=\&#34;99\&#34;, \&#34;Google Chrome\&#34;;v=\&#34;115\&#34;, \&#34;Chromium\&#34;;v=\&#34;115\&#34;&#34;, &#34;sec-ch-ua-mobile&#34;: &#34;?0&#34;, &#34;sec-ch-ua-platform&#34;: &#34;\&#34;Windows\&#34;&#34;, &#34;sec-fetch-dest&#34;: &#34;empty&#34;, &#34;sec-fetch-mode&#34;: &#34;cors&#34;, &#34;sec-fetch-site&#34;: &#34;same-site&#34; }, &#34;referrer&#34;: &#34;https://sub2.some-domain.com/&#34;, &#34;referrerPolicy&#34;: &#34;strict-origin-when-cross-origin&#34;, &#34;body&#34;: null, &#34;method&#34;: &#34;GET&#34;, &#34;mode&#34;: &#34;cors&#34;, &#34;credentials&#34;: &#34;include&#34; }); </code></pre> <p><em>GET 响应标头:</em></p> <pre><code>Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: https://sub2.some-domain.com Cache-Control: no-store,no-cache Content-Encoding: gzip Content-Type: application/json; charset=utf-8 Pragma: no-cache </code></pre> <p><strong>P.S.P.S</strong> 在本地,一切正常,包括 httponly cookie。 <br/> 我相信这个原因是<pre><code>https://api.some-domain.com</code></pre>,<pre><code>https://sub1.some-domain.com</code></pre>,<pre><code>https://sub2.some-domain.com</code></pre>是<pre><code>https://localhost</code></pre>。</p> </question> <answer tick="false" vote="-1"> <h3>HttpOnly Cookie</h3> <p>HttpOnly 是网站可以指定的关于 cookie 的标志。换句话说,网络服务器告诉您的浏览器<em>“嘿,这是一个 cookie,您应该将其视为 HttpOnly”</em>。</p> JavaScript 无法访问 HttpOnly Cookie。只有浏览器知道它,并且它不会将其提供给页面中的 JavaScript 代码。乍一看,这听起来像是一个限制,但事实确实如此。然而,这样做的目的是我们不能信任 JavaScript 代码。攻击者可能会使用 JavaScript 来“窃取”我们存储在 cookie 中的身份验证令牌,然后使用我们的帐户访问网站。对于 HttpOnly cookie,这是不可能的。这使得<p>XSS 攻击<em>(我们刚刚描述的攻击)更难执行。</em> <strong>仅与 HttpOnly cookie 共享任何身份验证数据是公认的最佳实践。使用标准 cookie 进行身份验证是一个已知的漏洞,我们在任何情况下都应该避免。</strong> </p> <p>更多信息</p> <hr/><h3>设置-Cookie | MDN 开发者文档</h3><p> <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#httponly" rel="nofollow noreferrer"></a>仅 Http | OWASP 基金会</p><p> <a href="https://owasp.org/www-community/HttpOnly" rel="nofollow noreferrer"> </a>可能的解决方案</p> <hr/> <h3>将子域更改为与父域相同</h3> <ol>在子域上放置代理服务器,并将请求转发到正确的服务器。<li> </li>关闭 Cookie 的 HttpOnly。 [不推荐]<li> </li>使用<li>服务人员</li><li> <a href="https://stackoverflow.com/a/74355943/1072378"> </a> </li>1.安装一个服务工作者,其脚本由您的应用程序服务器呈现(例如,在 PHP 中)。在那里,您可以在闭包中输出 cookie,因此其他脚本甚至注入的函数都无法读取它们。尝试从其他用户代理加载相同的 URL 将不会获得 cookie,因此它是安全的。</ol> <blockquote>2.是的,服务工作人员会定期卸载,但每次再次加载时,由于#1,它都会有最新的 cookie。<p> </p>3.在服务器端代码响应渲染中,每次添加 Set-Cookie 标头时,也会添加具有相同内容的 Set-Cookie-JS 标头。让 Service Worker 拦截此响应,读取 cookie,并更新闭包中的私有对象。<p> </p>4.在“fetch”事件中,添加一个特殊的请求头,例如Cookie-JS,并传递本来应该在cookie中传递的内容。在将请求发送到服务器之前,将其添加到请求标头中。通过这种方式,您可以将所有“httponly”cookie 发送回服务器,而 Javascript 无法看到它们,即使实际的 cookie 被阻止!<p> </p>5.在您的服务器上,处理 Cookie-JS 标头并将其合并到您常用的 Cookie 机制中,然后像往常一样继续运行其余代码。<p> </p> <p> </p>使用 </blockquote>Chrome 扩展程序<ol start="5"><li> <a href="https://stackoverflow.com/a/39303460/1072378"> </a> </li> </ol>父级和 iframe 不被视为来自同一站点。即使它们共享相同的域,但它们具有不同的子域,并且它们被 cookie 的 SameSite 属性视为不同的“站点”。</answer> <answer tick="false" vote="-2">您的父页面位于 <p>https://sub1.some-domain.com</p>,您的 iframe 位于 <p>https://sub2.some-domain.com<a href="https://sub1.some-domain.com" rel="nofollow noreferrer">。由于 cookie 的 SameSite 属性设置为 None,因此 cookie 不会发送到 iframe,因为父页面和 iframe 被认为是不同的站点。</a> <a href="https://sub2.some-domain.com" rel="nofollow noreferrer">您可以尝试通过设置 </a><code>SameSite=None; Secure</code></p> 来更改 SameSite 属性,以允许跨站点发送 cookie,但只能通过安全连接发送。然而,这可能会导致 CSRF 漏洞。<p> <pre>另一种选择是使用 postMessage。您可以使用 </pre><code>window.postMessage</code></p> 跨窗口或 iframe 安全地发送消息,甚至在不同的域中也是如此。然后接收者窗口可以决定如何处理消息。<p> <pre>最后,您使用服务器端解决方案。您可以移动逻辑服务器端,而不是在客户端处理 cookie。这样您就无需担心浏览器阻止第三方 cookie。</pre> </p> <p></p>

回答 0 投票 0

字体未加载 - CORS 表示标头不包含访问控制但有

问题:我正在使用从一个站点生成的 html,该站点被推送到另一个站点(不同的域)。除了字体(主要用于图标)没有显示外,一切正常。我是

回答 3 投票 0

GET 请求被禁止,而 POST 请求正常

在我的 web 应用程序中,我需要调用不同的 web 服务(由我开发/管理)以通过 rest API 启动/管理资源。 Web 服务运行在 tomcat6 上。我可以从眉毛看到...

回答 2 投票 0

iframe 内的多页 Google Apps Script 网络应用程序路由

相关链接: @TheMaster 关于 Google 网络应用程序和 iframe 的精彩帖子 Google 关于网络应用程序和 iframe 的文档 无限嵌套的 iFrame 我有一个部署为网络应用程序的 Google Apps 脚本项目

回答 0 投票 0

尽管正确配置了选项和 CORS,但获取不包括 Cookies

我有一个后端服务器 -- https://b.com -- 和一个客户端服务器 -- https://a.com。我想从 a.com 向 b.com 发出经过身份验证的 ajax 请求。 在发出请求之前,用户会去...

回答 0 投票 0

Cypress e2e:无法使用 cy.origin() 测试多域?

我正在学习 cy.origin 概念,并在下面的互联网片段中发现它运行良好。我收到一个错误,因为无法找到元素:#login_field。我还设置了 true chromeWebSecurity &

回答 1 投票 0

Cypress 跨域 cy.origin 传递对象不起作用

我想从一个网站跨域到另一个网站,cypress 让我可以用 cy.origin() 函数很好地做到这一点。 我还想要的是将我所在页面的页面对象模型传递到...

回答 2 投票 0

set-cookie not stored ..error msg about Domain

访问控制允许来源:http://localhost:3000 内容长度:299 内容类型:应用程序/json;字符集=utf-8 日期:格林威治标准时间 2023 年 5 月 1 日星期一 11:35:51 etag: W/"12b-8efK5dxnadj10qqm+FsB8wLDLF...

回答 0 投票 0

SecurityError:CSSStyleSheet.cssRules getter:使用 Selenium Firefox 读取 CSS 样式表时不允许访问跨源样式表错误

我正在使用带有 Java 和 Chrome/Firefox 驱动程序的 Selenium。 FirefoxProfile 配置文件 = new FirefoxProfile(); profile.setPreference("javascript.enabled", true); profile.setPreference("security.fileuri.

回答 2 投票 0

Window.postMessage()如何跨域使用?

我想使用 Window.postMessage() 来绕过父级和 iframe 之间的通信时的跨域安全问题。这是如何工作的?

回答 1 投票 0

使用 origin 和 x-forwarded 时,开发模式下 SvelteKit 出现“禁止跨站点 POST 表单提交”错误

我有一个运行在 http://localhost:5173 的 SvelteKit 应用程序(在进行本地开发时),它前面有一个运行在 http://localhost:8057 的 Nginx,提供一些静态文件和代理请求......

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.