pad*_*dis 8 rest jquery jsonp cross-domain
我正在调用Version One REST API并继续收到XMLHttpRequest cannot load https://www10.v1host.com/... Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin.javascript错误.我发送GET请求,预计XML内容将作为响应返回.这是我的jQuery代码:
$.ajax({
dataType: "xml",
url: "https://www10.v1host.com/...",
success: function(data, status, xhr) {
alert("Load was performed.");
}
});
Run Code Online (Sandbox Code Playgroud)
我已经改变了dataType: "jsonp"并且通过这种方式我得到了这种格式的回应:
jsonp1294354293197(<?xml version="1.0" encoding="UTF-8"?><Asset ...</Asset>)
Run Code Online (Sandbox Code Playgroud)
但是得到另一个javascript错误:" Uncaught SyntaxError: Unexpected token <"
有没有办法如何获取跨域XML休息数据(类似于XMLp)或为jsonp做一个变通方法(防止解析JSON格式并使用我自己的解析XML)?
你不能做跨域XMLHttpRequest,期间.至于你自己的解析XML - 只有你可以从服务器获得转义字符串而不是裸XML才有可能.没有神奇的解析JSON - JSONP技术只是请求另一个脚本动态添加<script src=...>到头部,内部的所有内容都被视为普通的JavaScript.
只要REST API(不是您的服务器)的服务器通过设置CORS(跨源资源共享) HTTP标头允许来自不同来源的请求,例如通过设置"访问控制 - 允许",就不可能-Origin"响应中的HTTP标头:
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)
要么
Access-Control-Allow-Origin: http://localhost:8080
Run Code Online (Sandbox Code Playgroud)
但是,您可以使用Ajax调用自己的服务器,然后使用自己的服务器作为一种代理来调用其他域中的其他服务器,使用合适的解析器解析XML或HTML结果,并给出结果回到客户端:
client --(Ajax)--> server
server --(HTTP)---> Site
server <----------
client <----------
Run Code Online (Sandbox Code Playgroud)