跨域HTML解析使用AngularJS
Cross domain HTML parsing using AngularJS
我们正在开发 java 项目,其中后端为 java + spring,前端为 angular 2 + HTML。
我想进行跨域 html 解析,但是 我们没有访问服务器端外部 link 的权限,因为我们有一些外部域的安全问题,所以我们必须在客户端使用jquery获取link的DOM内容。
我试过这些:
var url = "http://xyz.aspx";
$http({
method: 'JSONP',
url: url,
params: {
format: 'jsonp',
json_callback: 'JSON_CALLBACK'
}
}).
success(function(response) {
$scope.test = response;
}).
error(function(status) {
//your code when fails
});
我需要解析的外部link包含很多href
link。我还需要解析那些 links.
的内容
已尝试上述代码:
getting error in console - Uncaught SyntaxError: Unexpected token < on
xyz.aspx page
获取页面内容并传递到服务器端进行解析的最佳解决方案是什么?
解决方案 1)
getting error in console - Uncaught SyntaxError: Unexpected token < on xyz.aspx page
这意味着服务器回调不是有效的 JavaScript 应用程序。请确保您的服务器 return 是有效的 JavaScript 应用程序。这样这个错误就会消失。 JSONP
需要有效的 JavaScript 应用程序响应才能使其正常工作。例如,JSONP 回调应该是这样的:
jsonCallback(
{
sites: [
{
siteName: "Test"
}
]
}
);
解决方案 2)
如果您的服务器端没有 return JSON 对象,请尝试使用 GET
请求并启用 CORS。
$http({
method: 'GET',
url: "http://xyz.aspx",
}).success(function(response) {
$scope.test = response.data;
}).error(function(status) {
//your code when fails
});
解决方案 3)
如果您仍然无法将 CORS 添加到您的后端,您可以自己创建一个 PROXY 应用程序。例如,这是一个 public CORS 代理 https://crossorigin.me/。添加一个关于如何创建代理服务的示例就足够了。请自行研究。网上有很多例子。
参见ng.$http。您的 URL 缺少回调参数,而不是像
json_callback: 'JSON_CALLBACK'
试试下面的方法
$http({
method: 'jsonp',
url: 'http://xyz.aspx?callback=JSON_CALLBACK',
params: { name: 'xyz' }
}).success(function(data, status , header, config) {
console.log('success');
}).error(function(data, status , header, config) {
console.log('error');
});
我们正在开发 java 项目,其中后端为 java + spring,前端为 angular 2 + HTML。
我想进行跨域 html 解析,但是 我们没有访问服务器端外部 link 的权限,因为我们有一些外部域的安全问题,所以我们必须在客户端使用jquery获取link的DOM内容。
我试过这些:
var url = "http://xyz.aspx";
$http({
method: 'JSONP',
url: url,
params: {
format: 'jsonp',
json_callback: 'JSON_CALLBACK'
}
}).
success(function(response) {
$scope.test = response;
}).
error(function(status) {
//your code when fails
});
我需要解析的外部link包含很多href
link。我还需要解析那些 links.
已尝试上述代码:
getting error in console - Uncaught SyntaxError: Unexpected token < on xyz.aspx page
获取页面内容并传递到服务器端进行解析的最佳解决方案是什么?
解决方案 1)
getting error in console - Uncaught SyntaxError: Unexpected token < on xyz.aspx page
这意味着服务器回调不是有效的 JavaScript 应用程序。请确保您的服务器 return 是有效的 JavaScript 应用程序。这样这个错误就会消失。 JSONP
需要有效的 JavaScript 应用程序响应才能使其正常工作。例如,JSONP 回调应该是这样的:
jsonCallback(
{
sites: [
{
siteName: "Test"
}
]
}
);
解决方案 2)
如果您的服务器端没有 return JSON 对象,请尝试使用 GET
请求并启用 CORS。
$http({
method: 'GET',
url: "http://xyz.aspx",
}).success(function(response) {
$scope.test = response.data;
}).error(function(status) {
//your code when fails
});
解决方案 3)
如果您仍然无法将 CORS 添加到您的后端,您可以自己创建一个 PROXY 应用程序。例如,这是一个 public CORS 代理 https://crossorigin.me/。添加一个关于如何创建代理服务的示例就足够了。请自行研究。网上有很多例子。
参见ng.$http。您的 URL 缺少回调参数,而不是像
json_callback: 'JSON_CALLBACK'
试试下面的方法
$http({
method: 'jsonp',
url: 'http://xyz.aspx?callback=JSON_CALLBACK',
params: { name: 'xyz' }
}).success(function(data, status , header, config) {
console.log('success');
}).error(function(data, status , header, config) {
console.log('error');
});