ajax发送请求跨域问题

发布于 2022-09-12 22:19:46 字数 729 浏览 28 评论 0

用ajax发请求的时候,这样写:

xhr.open('get', `http://localhost:9999/login?${params}`)

浏览器会报跨域错误
image.png

如果把请求地址改成这样:

xhr.open('get', `http://127.0.0.1:9999/login?${params}`)

就可以正常返回服务端的值
浏览器访问的地址是http://127.0.0.1:9999/pub/ajax02.html
我很好奇为什么请求地址写127.0.0.1就没问题,如果访问localhost就跨域,在本地环境下这两个不是一样的地址吗?请大神们解释一下,感谢!!

对了,服务端是express写的简单demo:

app.use('/pub', express.static(path.join(__dirname, 'public')))
app.listen(9999, () => {
    console.log('server running at port 9999...')
})

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

2022-09-19 22:19:46

虽然 localhost 的 DNS 解析指向 127.0.0.1,但两者不同域;而且这种解析本来就是可以修改的。

同域还是跨域只看协议 + 域名/IP + 端口三者是否完全一致,有一个不一样就是跨域,哪怕你那域名 DNS 解析后跟 IP 是同一个。

彻夜缠绵 2022-09-19 22:19:46

浏览器的同源策略
是域名 协议 端口号都一样才能访问缓存 ajax请求,不同源则为跨域
你现在http协议相同 端口号9999相同 但是域名不相同 一个localhost 一个127.0.0.1
所以会跨域

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文