[英]Cannot find solutions to “No 'Access-Control-Allow-Origin' header” with CouchDB
[英]No 'Access-Control-Allow-Origin' header - Tried all possible solutions
我知道这个问题已经被问过很多次了,但是我确实尝试了所有方法,但是仍然出现此错误。
我正在尝试通过index.php文件中的ajax获取json数据。 我正在ubuntu服务器上通过apache2运行我的网站。 我不知道从这里去哪里。
确切错误:
Failed to load http://localhost:32348/getinfo: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost' is therefore not allowed access.
我试过的: -将其添加到/etc/apache2/apache2.conf文件
<ifModule mod_headers.c>
Header set Access-Control-Allow-Origin: *
</ifModule>
-将其添加到/etc/apache2/apache2.conf文件的每个<Directory>
标记之间:
Header set Access-Control-Allow-Origin "*"
-将其添加到我的index.php文件中:
<?php
header('Access-Control-Allow-Origin: *');
?>
-将'json'更改为'jsonp',将crossDomain设置为true并添加标头以允许来源
function fetchLiveStats() {
$.ajax({
url: api + '/getinfo',
dataType: 'jsonp',
type: 'GET',
crossDomain: true,
headers: {'Access-Control-Allow-Origin': '*'},
success: function(response) {
console.log(response);
},
cache: 'false'
}).done(function(data){
pulseLiveUpdate();
lastStats = data;
currentPage.update();
}).always(function () {
setTimeout(function() {
fetchLiveStats();
}, refreshDelay);
});
}
您需要将Access-Control-Allow-Origin标头添加到来自http://localhost:32348/getinfo
的响应中。
我试过的:-将其添加到/etc/apache2/apache2.conf文件
关于该问题,您所说的其他所有内容都意味着Apache在80端口上托管了该网站,而不是在32348端口上托管了该网站。您正在更改错误的服务器。
网站无法授予自己访问其他网站将授予浏览器所有者的数据的权限。
将'json'更改为'jsonp'
不要使用JSONP。 这是一个肮脏的hack。 (它还要求http://localhost:32348/getinfo
返回JSONP,几乎可以肯定不是)。
将crossDomain设置为true
这只是告诉jQuery不要添加添加到Same Origin请求的标头,以防HTTP重定向到其他起源。 这样可以防止它是一个需要进行预检的复杂请求。 由于您首先没有要求使用相同的原始URL,因此不会执行任何操作。
添加标题以允许来源
您不能在请求上添加响应头!
尝试将其转换为需要进行预检的复杂请求,并导致您遇到更多问题。
您需要编辑负责提供http://localhost:32348/getinfo
任何代码
尝试进行新更新时,请不要忘记清空缓存(ipconfig / flushdns)和浏览器缓存,否则,可能不会考虑修改...
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.