【发布时间】:2016-05-26 02:24:04
【问题描述】:
--Ajax 方法调用以获取 HTML 格式的响应
function send_with_ajax(brand) {
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() { alertContents(httpRequest); };
httpRequest.open("GET", "https://XXXX--LEGACY SYSTEM--XXXX", true);
httpRequest.setRequestHeader( 'Access-Control-Allow-Origin', 'https://XXXX--LEGACY SYSTEM's IP Address--XXXX/');
httpRequest.send(null);
}
function alertContents(httpRequest) {
alert(httpRequest.readyState);
if (httpRequest.readyState == 4) {
// everything is good, the response is received
if ((httpRequest.status == 200) || (httpRequest.status == 0)) {
//Get the httpRequest.responseText
} else {
//Error with the response or Failed to load the response;
}
}
}
嗨,在上面的 JS 代码中,我创建了一个 activeX 对象来访问遗留系统(这意味着端点 Java 中不存在与 CORS 相关的 API)。 同样,我希望收到 HTML 格式类型的响应。这在 IE(HTML 代码类型)中运行良好,但是当使用 Chrome(移植到 HTML5 代码类型)尝试相同时,我最终遇到了 CORS 问题。好的......它发生了,我试图在这里设置标题以解决它,但它也徒劳无功。有没有办法解决这个问题。请注意,我正在尝试与端点 java 组件无法进行任何修改的遗留系统进行交互。请帮忙!!!
【问题讨论】:
-
access-control-allow-origin标头设置在 response 中,而不是请求中...实际上,在请求中设置它们可能会产生不利影响 -
legacy system where endpoint java component cannot have any amendments- 基本上你有两个选择,修改服务器,或者使用你的页面提供的服务器为你发出请求 -
你正要说客户端和服务都应该驻留在同一台机器上才能解决这个问题......不是吗???
-
不...您显然有两个服务器 - 一个使用上面显示的代码为您的页面提供服务,第二个是旧服务器..您将使用第一台服务器作为代理遗产 - 正如 TJ Crowder 的回答中所述
标签: javascript html cors cross-domain activexobject