从其自己的域中获取api时出现CORS错误

时间:2017-12-28 16:39:51

标签: javascript http cors fetch

其中一个应用用户在尝试从同一个域中获取api时经常出错。此错误仅在Chrome中出现,其他浏览器在他的计算机上都可以。他还试图安装Chrome CORS扩展,但没有运气。有没有人知道为什么会这样?

以下错误文字:

无法加载http://my-app.com/api/v1/scoreboard:对预检请求的响应未通过访问控制检查:请求的资源上没有“Access-Control-Allow-Origin”标头。因此,不允许原点“http://www.my-app.com”访问。如果不透明响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用CORS的资源。

3 个答案:

答案 0 :(得分:1)

如果wwwnon www导致CORS问题。然后在我看来,您可以将非WWW URL重定向到WWW URL。可以使用.htaccess或更改c-panel上的某些设置来实现 这里是相关答案Redirect non-www to www in .htaccess

另一种选择是在服务器端设置cors标头。

希望有所帮助

答案 1 :(得分:1)

这取决于几个方面,但通常调用代码不应该有任何特殊配置。相反,您的服务器端必须决定拒绝或允许该请求。如果您的服务器端可以有.htaccess文件,请尝试添加此行。

<IfModule mod_headers.c>
 Header set Access-Control-Allow-Origin "*"
 Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT,PATCH"
 Header set Access-Control-Allow-Headers "Content-Type,Authorization"
</IfModule> 

不要忘记在允许的方法列表中添加OPTIONS方法。这是因为浏览器总是通过发送OPTIONS请求来检查终点可用性。

答案 2 :(得分:0)

从www添加301重定向到no-www域名对我有用。在此找到解决方案Nginx no-www to www and www to no-www