【问题标题】:Javascript_http request to another domain对另一个域的 Javascript Http 请求
【发布时间】:2014-05-14 17:43:47
【问题描述】:

我想从另一个域的网页中获取数据,但出现此错误

No 'access-control-allow-origin' header is present on the requested resource

我已经尝试过此博客 http://www.nczonline.net/blog/2010/05/25/cross-domain-ajax-with-cross-origin-resource-sharing/ 中的 CORS 示例,但我仍然遇到相同的错误。
当我在应用程序中运行页面时,我设法获取了页面的内容(我在 Titanium 应用程序中所做的事情,现在在运行在浏览器中的 PhoneGap 中工作)

这是我的脚本

function createCORSRequest(method, url){
 var xhr = new XMLHttpRequest();
 if ("withCredentials" in xhr){
     xhr.open(method, url, true);
 } else if (typeof XDomainRequest != "undefined"){
     xhr = new XDomainRequest();
     xhr.open(method, url);
 } else {
     xhr = null;
 }
 return xhr;

}

function insertText () {
var artist = [];
var table = document.createElement('TABLE')
var tableBody = document.createElement('TBODY')
table.border = '1'
table.appendChild(tableBody);
var xhr = createCORSRequest('GET', "http://www.rockwerchter.be/en/line-up");
if (!xhr) {
  throw new Error('CORS not supported');
}
xhr.open("GET", "http://www.rockwerchter.be/en/line-up");
xhr.send();
xhr.onload = function(){
    text = request.responseText;
    var regex = new RegExp(".*box-title box-title-h3 mb-05.*", "g");
    artist = text.match(regex);
    var data = [];
    for (var i=0; i<artist.length; i++) {
        var tr = document.createElement('TR');
        tableBody.appendChild(tr);
        artist[i]= artist[i].replace("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t<h2 class=\"box-title box-title-h3 mb-05\">", "");
        artist[i]= artist[i].replace("</h2>","");
        tr.innerHTML=artist[i];
    }
}
}

【问题讨论】:

  • 也就是说这个网站只是不支持CORS?
  • 我仍然希望我只是错过了一些东西。我需要添加一些标题吗?
  • 但是当我在应用程序中运行它时设法获取页面的内容(我在 Titanium 应用程序中所做的事情,现在在浏览器中运行的 PhoneGap 中工作)
  • 不行,你请求的站点需要添加header!

标签: javascript xmlhttprequest cross-domain


【解决方案1】:

如果请求的 url 是 PHP 文件,则应在页面顶部添加此标头:

header('Access-Control-Allow-Origin: *');  

您可以输入请求的域,而不是通配符。


根据您的回复,您应该在 .htaccess 中设置如下:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

我从this source得到这个

【讨论】:

  • 请求的url是html文件
  • 对不起,我迷路了,我应该把这个放在哪里?非常感谢您的宝贵时间!
  • 您应该在您请求的 html 文件所在的文件夹中创建一个 .htaccess 文件。在此 .htaccess 文件中,您可以添加此代码。其他解决方案是只需将文件更改为 .php 并添加我的第一个解决方案。
  • 我的意思是,这个 .htaccess 文件在哪里
  • 正如我所说,如果它不存在,你应该创建它。
猜你喜欢
  • 2020-06-09
  • 1970-01-01
  • 1970-01-01
  • 2016-08-15
  • 2012-01-04
  • 2016-06-11
  • 1970-01-01
  • 2023-03-08
  • 2013-07-17
相关资源
最近更新 更多