jquery - 如何使用 jQuery AJAX 加载跨域 html 页面?

标签 jquery ajax jquery-plugins cross-browser cross-domain

如何使用 jQuery AJAX 加载跨域 HTML 页面?

假设我想使用 jQuery AJAX 获取域外的页面:

$.get('http://www.domain.com/mypage.html', function(data) {
  alert(data);
});

我可能会收到此错误消息:

XMLHttpRequest cannot load http://www.domain.com/path/filename. Origin null is not allowed by Access-Control-Allow-Origin.

我们无法使用 AJAX 加载跨域页面,因为 Same-origin policy .

我可以尝试使用“jsonp”来绕过此限制:

$.ajax({
  type:     "GET",
  url:      url,
  dataType: "jsonp",
  success: function(data){
    console.log(data);
  }
});

但是如果此站点不支持“jsonp”怎么办?这可能是一个问题。

如果我只想读取外部页面并解析其 HTML,该怎么办?

最佳答案

我知道这是一篇旧帖子。但是,我希望这能帮助其他正在寻找同样东西的人。

根本不能。 - 同源策略或者您需要为 www.domain.com 设置 CORS header

但是,如果您只想将外部页面内容获取到您的页面,可以采取一种解决方法:

在您的服务器中创建一个端点,以返回给定外部 URL 的 HTML 内容。(因为您无法将外部内容获取到浏览器 - 同源策略)

JS:

var encodedUrl = encodeURIComponent('http://www.domain.com/mypage.html');
$.get('http://www.yourdomain.com/getcontent?url=' + encodedUrl, function(data) {
    console.log(data);
});

<强> Easiest way to read from a URL into a string in .NET - 可以使用它来创建/getcontent端点

关于jquery - 如何使用 jQuery AJAX 加载跨域 html 页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707287/

相关文章:

javascript - 在jQuery中如何将被 "mouseover"事件检测到的优先级赋予子元素

javascript - jQuery 在页面下方 90% 处执行操作

jquery - 如何使用经典 asp 通过 ajax.api 发送和接收数组值

php - 难以使用 MySQL、PHP、jQuery 和 Ajax 创建搜索功能

jquery - 如何使用rails3-jquery-autocomplete插件进行多个单词自动完成

javascript - 如何使用 jQuery 插件中的每个函数

javascript - 找出一组 child 的宽度

javascript - 单击控件的大小更改

javascript - 是否可以异步重绘网站(不阻塞 UI)?

jQuery文件上传插件: How to upload to subfolders?