You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Express与CORS开发时GET请求被CORS策略拦截是什么原因?

问题根因

你服务端CORS配置的origin字段仅允许http://address.com发起跨域请求,但你当前实际发起请求的前端页面源是http://localhost:8000,二者不匹配,浏览器就会按照CORS规则拦截请求。

解决方案

根据你的使用场景选择对应配置即可:

场景1:本地开发临时调试

直接放开所有源的跨域限制,仅推荐开发阶段使用,不要上生产:
修改server.js里的cors配置:

// 把原来的corsOptions替换成这行
var corsOptions = { origin: '*', optionsSuccessStatus: 200}

场景2:生产环境指定允许多个源

把你需要用到的前端访问源都加到允许列表里,比如你用到的http://localhost:8000、IP访问的源、正式域名http://address.com都加进去:

const allowedOrigins = [
  'http://address.com',
  'http://localhost:8000',
  'http://address:3000' // 这里替换成你实际的设备IP访问地址
]
var corsOptions = {
  origin: function (origin, callback) {
    // 允许没有origin的请求(比如端内页、postman调试)
    if (allowedOrigins.includes(origin) || !origin) {
      callback(null, true)
    } else {
      callback(new Error('Not allowed by CORS'))
    }
  },
  optionsSuccessStatus: 200
}

补充说明

你之前用IP访问时功能正常,是因为此时前端页面的origin刚好和你CSP、跨域允许列表里的IP地址匹配,所以不会触发拦截。你观察到POST正常GET异常的情况,大概率是测试POST时的请求源刚好匹配了允许的域名,或者POST属于不需要预检的简单请求,你可以核对下POST请求的测试场景是否和GET一致。

内容的提问来源于stack exchange,提问作者Quill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:54:07