js 报No 'Access-Control-Allow-Origin' header is present on the requested resource.
时间: 2023-10-29 15:00:18 浏览: 46
当使用JavaScript发起跨域请求时,如果服务器没有设置"Access-Control-Allow-Origin"字段或者设置了错误的值,就会报错"No 'Access-Control-Allow-Origin' header is present on the requested resource"。这是由于浏览器的同源策略引起的,该策略禁止从一个域中的脚本向另一个域发送请求,除非目标域明确允许。
解决这个问题的方法有以下几种:
1. 在服务器端设置响应头部信息,添加"Access-Control-Allow-Origin"字段,并指定允许访问的域。例如,如果允许所有域访问,可以设置为"*"。你可以在服务器端的代码中添加类似以下的代码:
```
response.setHeader("Access-Control-Allow-Origin", "*");
```
这样就允许任何域都可以访问该资源了。请确保在正确的位置设置这个响应头部信息。
2. 如果你只允许特定的域访问,可以将"*"替换为你允许访问的域名,例如"http://example.com"。这样只有该域名下的页面才能访问该资源。
3. 如果你的前端工程是一个Vue工程,可以尝试使用vue.config.js文件来配置代理解决跨域问题。在该文件中添加以下配置代码:
```
module.exports = {
devServer: {
proxy: {
'/api': {
target: 'http://localhost:3000', // 你的后端接口地址
changeOrigin: true,
pathRewrite: {
'^/api': '' // 如果你的接口路径有/api前缀,将其替换为空字符串
}
}
}
}
}
```
这样配置后,所有以/api开头的请求都会被代理到指定的后端接口地址,并且自动处理跨域问题。
以上是解决"No 'Access-Control-Allow-Origin' header is present on the requested resource"错误的几种常见方法。你可以根据具体情况选择适合你的解决方案。