发出跨域请求时无法使用 JSONP 取回任何数据
Posted
技术标签:
【中文标题】发出跨域请求时无法使用 JSONP 取回任何数据【英文标题】:Can't get any data back using JSONP when making a cross-domain request 【发布时间】:2020-08-05 05:52:37 【问题描述】:我有一个网站,我需要从我的浏览器发送一个 GET 请求并取回 html 数据。但是该网站有一个“X-Frame-Option: DENY”,由于 CORS 政策,我无法发出 Ajax 请求。所以我用 JSONP 进行了尝试,但它没有返回任何数据。它确实说 200 OK 连接。我使用的是最新版本的 Chrome。
// Not returning HTML back
$.getJSON("https://www.google.com/?callback=?", function(result)
console.log(result)
)
// I tried this but also didn't work
$.ajax(
url: 'https://www.google.com',
dataType: 'jsonp',
success: function(result)
console.log(result)
)
我不确定这里发生了什么..
【问题讨论】:
X-Frame-Option
不是 CORS 标头,它只是防止页面显示在 (i) 框架中。你想达到什么目的?强制谷歌在 iframe 中显示?
我想向该站点发出 GET 请求并返回 HTML
在自己的服务器上读取文件,或者使用代理服务器。
【参考方案1】:
JSONP 仅在您调用的 URL 包含格式为 JSONP 的数据时才有效。
您使用的 URL 包含 HTML 而不是 JSONP。
您无法使用 JSONP 读取任意数据。在浏览器中禁用同源策略并不是魔术棒。
【讨论】:
谢谢,所以我想我想要的是不可能的。 不单独使用客户端代码。您可以使用服务器端代码读取它并以这种方式代理它。 我需要它作为客户端,因为我希望 cookie 也能工作。 那是不可能的。如果您网站的 javascript 可以使用您访问者在这些网站上的凭据从其他网站读取数据,那将是一个可怕的安全问题。以上是关于发出跨域请求时无法使用 JSONP 取回任何数据的主要内容,如果未能解决你的问题,请参考以下文章