我正在尝试使用ajax登录API,我收到此错误:
XMLHttpRequest无法加载。 ' Access-Control-Allow-Origin'头 具有不等于提供的原点的值。起源 ' http://localhost'因此不允许访问。
我在互联网上阅读了有关此错误的所有内容,并且我已经尝试了所有可以在网上找到的解决方案。我根据CORS指令修改了.htaccess和apache httpd配置文件:http://enable-cors.org/server_apache.html
Access-Control-Allow-Origin: *
似乎没有任何效果。如果你们能帮我解决这个问题,我真的很感激。谢谢!
答案 0 :(得分:2)
您必须将 Access-Control-Allow-Origin标头设置为*或指定值 http://localhost
您可以通过以下方式执行此操作:
1-您的代码
2- .htaccess文件
3-服务器配置(需要重新启动Web服务器)
以下是显示如何在apache上执行此操作的链接
http://access-control-allow-origin-guide.com/enable-cors-on-apache-linux/
答案 1 :(得分:0)
我使用htaccess文件在不同的托管中加载JSON数据,但它可以正常工作
它必须放在我们的网络托管的公共html根目录中,例如
将.htaccess上传到 - > (https://freehostingsomewhere.com/)
然后在.htaccess里面
<FilesMatch "\.(ttf|otf|eot|woff|jpg|png|jpeg|gif|js|json|html|css)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://localhost"
</IfModule>
</FilesMatch>
在这里我使用http://localhost进行开发,它可以正常工作,
也许如果我有另一个网站主机只需将其更改为该网址,我会稍后再尝试(它可以,我已经尝试了):p
这只是为了更清楚的解释
欢呼:p答案 2 :(得分:0)
添加浏览器安全性,除非API允许返回响应标头中的跨浏览器来源,否则无法解决此问题。
浏览器阻止它,有plugin允许使用Chrome,但依赖浏览器插件来允许最终用户请求是不现实的,
尝试并与API提供商联系,看看他们是否可以考虑更新回复中的标题。
这是一个CORS问题: https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
答案 3 :(得分:0)
您的请求是否有机会使用Cookie或授权?
如果您要将其配置为“使用凭据”,请检查客户端的ajax呼叫
.withCredentials = true;
如果是,则通配符(*)将不起作用,您需要提供确切的主机作为Access-Control-Allow-Origin
的值。