get方式发送请求出现跨域问题

文章描述了一个关于跨域访问的问题,XMLHttpRequest在尝试从http://localhost:8080访问http://localhost:8090时被CORS策略阻止。尽管后端已处理跨域,但使用GET请求并以URL参数形式传递数据导致了问题。将请求方法改为POST后,问题得到解决。这可能暗示GET请求的参数处理或后端接收方式存在不兼容情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Access to XMLHttpRequest at 'http://localhost:8090/concern?pageSize=10&pageNum=1&param[deviceWorkspace]=&param[userAccount]=%22190013129%22' from origin 'http://localhost:8080' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

但同伴说他已经在后端对跨域问题进行处理了。这里可以考虑是我传参方式不对,或是后端接收参数方式不对。我把get请求改为了post请求,便没有出现问题了......

我也查找了一些资料关于get请求传参的,可以直接在url上直接跟参数,也可以用params{}传。 

请求出现(Cross-Origin Resource Sharing, CORS)主要是由于浏览器的安全限制,不允许一个页面从另一个不同源的服务器发起 AJAX 请求。以下是一些常见的解决方案: 1. **服务端设置响应头**: 在服务器上,特别是在 Node.js 使用 Express 或其他框架的情况下,你可以通过设置响应头 `Access-Control-Allow-Origin` 来允许特定的 origin。例如: ```javascript res.header("Access-Control-Allow-Origin", "http://your-domain.com"); res.header("Access-Control-Allow-Methods", "GET, POST, OPTIONS"); res.header("Access-Control-Allow-Headers", "Content-Type"); ``` 这里设置了允许来自 "http://your-domain.com" 的请求。 2. **CORS预检请求(Preflighted Request)**: 如果你的服务器支持,可以在发起实际请求之前先发送一个 `OPTIONS` 方法的请求(被称为“预检”请求),来检查是否允许。如果预检请求成功,服务器会返回允许信息,然后客户端再发起实际的请求。 3. **JSONP(JSON with Padding)**: 对于一些老版本的浏览器或特殊场景(不支持 CORS 的情况),可以使用 JSONP。它是一种绕过同源策略的方式,通过动态插入 `<script>` 标签从其他名获取数据。 4. **Nginx 转发(反向代理)**: 如果你的应用部署在 Nginx 上,可以设置 Nginx 作为中介转发请求到正确的服务器,然后将响应返回给客户端,这样就解决了问题。 5. **在客户端使用 CORS 策略**: 有时候,即使服务器已经正确设置了 CORS,客户端也需要设置 `withCredentials: true` 来启用发送 cookie 或 localStorage 数据。 记住,对于 production 环境,建议始终让服务器端处理 CORS,因为这更安全可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值