代码段:
// 接口地址:http://api.apiopen.top/getJoke
// 1. 创建对象
const xhr = new XMLHttpRequest()
// 2. 初始化
xhr.open("GET", "http://api.apiopen.top/getJoke")
// xhr.setRequestHeader("Access-Control-Allow-Origin","*")
// 3. 发送
xhr.send()
// 绑定事件,处理响应结果
xhr.onreadystatechange = function () {
// 判断
if (xhr.readyState === 4) {
// 判断响应状态码 200-299
if (xhr.status >= 200 && xhr.status < 300) {
// 表示成功
console.log(xhr.response)
} else {
console.error(xhr.status)
}
}
}
错误显示:
翻译为:
通过CORS策略已阻止从源“ http://127.0.0.1:8848”访问“ http://api.apiopen.top/getJoke”处的XMLHttpRequest:不存在“ Access-Control-Allow-Origin”标头 在请求的资源上。
在网上找了许多解决方案,大多是从后台解决跨域的问题,但现在的情况只是处理一个小测试出现的跨域问题,并不涉及后台程序。其他方案并不适用。
解决:
将下面的代码改为xhr.open("GET", "https://api.apiopen.top/getJoke")即可,我的问题是这样解决的。
xhr.open("GET", "http://api.apiopen.top/getJoke")
如果对于你的不适用,推荐一篇文章 AJAX跨域解决 , 这篇文档讲解的蛮详细的。