【发布时间】:2017-02-22 18:24:04
【问题描述】:
我在一个桌面应用程序(使用 Electron 框架)中工作,该应用程序使用来自 Web 应用程序的服务,因为我使用 node.js soap 包来发出请求并且一切正常。
但突然有人要求我迁移桌面应用程序,使其成为仅限客户端的网络应用程序。
我的问题: 我不知道如何更改节点代码以使其在浏览器中工作。我对 Web 开发的经验很少,我有很多疑问和问题。
我尝试了什么:
使用 Javascript,与 XMLHttpRequest();但我遇到了 CORS 问题
使用 Browserify 捆绑代码,但我从 fs.readFileSync() 收到错误
我的问题:
我能否发出纯 Javascript Soap 请求而不会出现问题 跨域?? (有人告诉我这是不可能的,但我想 确认)
有没有办法在浏览器中使用下面的代码(带有节点模块)? (使用 browserify 等工具)
如果我必须为这个请求创建一个 Java 类,我会有 像javascript一样阻止跨域请求?如果不是怎么 我应该这样做吗??。
如果可能的话,我想要代码示例或架构应该如何的解释
Tomcat 中应用的域:
http://localhost:8080/AppWithWebServices/ws/core.wsdl --> 要使用的 Web 服务 http://localhost:8080/clientApp/soapRequest.js --> 包含对 Web 服务的请求的文件
来自我的桌面应用程序的带有肥皂请求 (soapRequest.js) 的代码:
var soap = require('soap');
var request = require('request');
const {ipcRenderer} = require('electron');
window.ipc = ipcRenderer;
Submit = function (){
var user = document.getElementById("username").value;
var passw = document.getElementById("password").value;
//Class with the wsdl url and the header and body for the request
var auth = new authentication(user,passw);
soap.createClient(auth.getWsdlURL(), function(err, soapClient){
if (err){
console.log("error en creacion cliente Soap");
}
//The soap request needs a security header with user and password
//to be able to consume the web services
soapClient.addSoapHeader(auth.getSoapHeader());
soapClient.ServiceToConsume(auth.soapRequestBody(), function(err, result) {
if (!err){
//Redirect to Home.html
ipc.send('redirectHome', user, result);
}
else{
document.getElementById("login").innerHTML = "El nombre de usuario o contraseña es incorrecto";
}
});
});
};
【问题讨论】:
标签: javascript java node.js web-services soap-client