Reactjs 反应JS cors“;';访问控制允许原点';标题包含多个值;

Reactjs 反应JS cors“;';访问控制允许原点';标题包含多个值;,reactjs,.htaccess,cors,Reactjs,.htaccess,Cors,场景 我正在使用fetch从远程apache服务器收集json。一开始,我收到了以下违反CORS的情况: 取 '' 来自源“”已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。如果不透明的响应满足您的需要,请设置请求的 模式设置为“无cors”,以获取禁用cors的资源 我克服了这个问题,为此项目在服务器的.htaccess文件中启用了CORS Header always set Acces

场景

我正在使用
fetch
从远程apache服务器收集json。一开始,我收到了以下违反CORS的情况:

取 '' 来自源“”已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查:否 “Access Control Allow Origin”标头出现在请求的服务器上 资源。如果不透明的响应满足您的需要,请设置请求的 模式设置为“无cors”,以获取禁用cors的资源

我克服了这个问题,为此项目在服务器的
.htaccess
文件中启用了CORS

Header always set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
现在我得到了一个不同的CORS违反

取 '' 来自源“”已被CORS策略阻止: 对飞行前请求的响应未通过访问控制检查: “访问控制允许来源”标题包含多个值“*, ,但只允许有一个。让服务器发送 具有有效值的标头,或者,如果不透明响应服务于 如果需要,请将请求的模式设置为“no cors”以获取资源 CORS残疾

问题

如何找到为
localhost:3000
设置的
Access Control Allow Origin
的位置?我已经做了一个完整的索引,并搜索了与cor、header等相关的字符串,但运气不好。所有想法都受到赞赏

额外的

  • 通过
    npm start
    第二个ACAO值是
    localhost:3000
    ,但通过
    npm build
    第二个ACAO值是
    localhost
    ,因此第二个值看起来是动态的,并且限制了反应
  • package.json添加
    proxy
    值似乎根本没有帮助

我最终无法确定是的开发节点服务器造成了这个问题(通过添加“localhost:3000”作为允许的来源),还是我对
.htaccess
文件的处理不如我想象的那么好。不管怎样,以下是最终有效的方法:

API服务器的.htaccess

# allows image files to bypass cors @jkr
<Files *.jpg>
  Header always set Access-Control-Allow-Origin "*"
  Header always set Access-Control-Allow-Credentials "true"
  Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
  Header always set Access-Control-Max-Age "1000"
  Header always set Access-Control-Allow-Headers "x-requested-with, Content-Type, origin, authorization, accept, client-security-token"
</Files>

#always allow preflight to pass @jkr
<LimitExcept OPTIONS>
  RewriteEngine On
  RewriteCond %{REQUEST_METHOD} OPTIONS
  RewriteRule ^(.*)$ $1 [R=200,L]
</LimitExcept>
#允许图像文件绕过cors@jkr
标题始终设置访问控制允许原点“*”
标头始终将访问控制允许凭据设置为“true”
Header始终设置访问控制允许方法“POST、GET、OPTIONS、DELETE、PUT”
标头始终设置访问控制最大期限“1000”
Header始终设置访问控制允许Header“x-requested-with、内容类型、来源、授权、接受、客户端安全令牌”
#始终允许飞行前通过@jkr
重新启动发动机
重写cond%{REQUEST_METHOD}选项
重写规则^(.*)$$1[R=200,L]

我建议您查看CORS错误列表,并尝试查看导致问题的原因。如果您可以访问网站的Apache配置文件,请检查CORS配置是否已经存在,可能是您的
。htaccess
配置导致返回此错误,与此相同