
关注让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言问题:如何解决跨域问题? 回答: 跨域问题指的是在一个域名下的网页去访问另一个域名下的资源时遇到的限制。常见的解决跨域问题的方式有以下几种:
function jsonp(url, callback) {
const script = document.createElement('script')
script.src = url
document.getElementsByTagName('head')[0].appendChild(script)
window[callback] = function(data) {
document.getElementsByTagName('head')[0].removeChild(script)
delete window[callback]
}
}
jsonp('http://example.com/data?callback=handleData', 'handleData')
// Node.js示例
const http = require('http')
const server = http.createServer((req, res) => {
res.writeHead(200, {
'Access-Control-Allow-Origin': 'http://localhost:8080',
'Access-Control-Allow-Methods': 'PUT,POST,GET,DELETE,OPTIONS',
'Access-Control-Allow-Headers': 'Content-Type'
})
if (req.method === 'OPTIONS') {
res.end()
} else {
res.end(JSON.stringify({ name: '张三' }))
}
})
server.listen(3000)
// Node.js + Express 示范
const express = require('express')
const httpProxy = require('http-proxy')
const app = express()
const proxy = httpProxy.createProxyServer()
app.all('*', (req, res) => {
proxy.web(req, res, {
target: 'https://api.example.com/',
changeOrigin: true
})
})
app.listen(3000)
总结: 跨域问题是前端开发中常见的问题,在实际开发中需要根据具体情况选择合适的解决方案。JSONP适用于简单的GET请求,CORS适用于其他类型的请求,反向代理适用于不方便修改API的情况。