跨域请求的解决方法
Posted
技术标签:
【中文标题】跨域请求的解决方法【英文标题】:Workaround for Cross Domain Request 【发布时间】:2021-11-29 20:55:51 【问题描述】:我正在尝试执行以下代码以使用 javascript 打开 URL
var Urlone = document.getElementById('00N0b00'),
opening = window.open(Urlone),
opening.onload = function()
var Urltwo = opening.document.getElementById('00GG')
window.open(Urltwo);
当 Urlone 与 Origin URL 来自同一个域时,这有效并打开 Urltwo,但当 Urlone 来自与 Origin 不同的域时,Urltwo 不会打开。
我知道它的因为或 CORS 标准,但我需要帮助来解决这个问题。
我已经尝试下载可以放松 CORS 的 chrome 扩展,但它不起作用。我不想使用 jquery 或 anyorigin.com。 寻找使用 javascript 的可能解决方案。
【问题讨论】:
【参考方案1】:CORS(跨域资源共享)是一个由传输 HTTP 标头组成的系统,用于确定浏览器是否阻止前端 JavaScript 代码访问跨域请求的响应。 (https://developer.mozilla.org/en-US/docs/Glossary/CORS)
当跨域资源共享被禁用时,您无法将 JavaScript 注入窗口,这是设计使然。
可能的解决方法:
在 Urltwo 的服务器上更改 CORS 标头如果您有权访问服务于 Urltwo
的服务器,则更改 CORS 设置是最佳解决方案。
如果您无权访问服务器,但可以编辑在Urltwo
提供的文档,则可以通过document.postMessage
(https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage) 或通过在 URL 中编码信息(查询字符串或哈希)在文档之间进行通信.
如果您都无法访问,则可以使用代理获取 Urltwo
的内容,发送正确的 CORS 标头并将结果发送回给您。
【讨论】:
以上是关于跨域请求的解决方法的主要内容,如果未能解决你的问题,请参考以下文章