Javascript jQuery通过CORS发布到webservice
我在你的文章中读了很多关于CORS和Javascript以及关于更改标题的主题,但是我找不到合适的例子 所以我首先要解释一下情况:Javascript jQuery通过CORS发布到webservice,javascript,jquery,web-services,sap,cors,Javascript,Jquery,Web Services,Sap,Cors,我在你的文章中读了很多关于CORS和Javascript以及关于更改标题的主题,但是我找不到合适的例子 所以我首先要解释一下情况: 我无法更改Web服务器的任何内容,因为这是我无法访问的(这是一个SAP云门户) 我只能更改邮政编码,所以我只能控制我发送的内容 下面的帖子描述了我遇到的问题: -->我的FF&Chrome标头发送方法选项,而不是方法POST 我编写的示例代码适用于IE,但不适用于FF&Chrome: var dataString = "<result><fi
- 我无法更改Web服务器的任何内容,因为这是我无法访问的(这是一个SAP云门户)
- 我只能更改邮政编码,所以我只能控制我发送的内容李>
var dataString = "<result><firstname>example</firstname><lastname>ThisIsSparta</lastname></result>";
var urlString = "http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post";
//Add TO SAP.
var aData =
jQuery.ajax({
type: "POST",
contentType: "application/xml",
url: urlString, // for different servers cross-domain restrictions need to be handled
data: dataString,
dataType: "text",
success: function(xml) { // callback called when data is received
//oModel.setData(data); // fill the received data into the JSONModel
alert("success to post");
},
error: function(xml) { // callback called when data is received
//oModel.setData(data); // fill the received data into the JSONModel
alert("fail to post");
}
});
});
var dataString=“examplethisisparta”;
var urlString=”http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post";
//添加到SAP。
变量aData=
jQuery.ajax({
类型:“POST”,
contentType:“应用程序/xml”,
url:urlString,//对于不同的服务器,需要处理跨域限制
数据:dataString,
数据类型:“文本”,
成功:收到数据时调用函数(xml){//回调
//oModel.setData(data);//将接收到的数据填充到JSONModel中
警报(“成功发布”);
},
错误:收到数据时调用函数(xml){//回调
//oModel.setData(data);//将接收到的数据填充到JSONModel中
警报(“未能发布”);
}
});
});
或
var invocation=newXMLHttpRequest();
var url='1〕http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post';
变量主体='perthyrtygopsparta';
open('POST',url,true);
setRequestHeader('X-PINGOTHER','pingpong');
setRequestHeader('Content-Type','application/xml');
调用发送(body);
我找到了两种方法来解决这个问题,但没有任何示例:
-用代理做些什么?
-发送特定的标题
有关我的问题的更多信息,请访问:
-如果您无法在服务器端设置正确的头,并且无法修改jsonP的响应,那么您确实应该使用代理 代理脚本是一种中间件。您向脚本发出请求,脚本获取数据并将其返回给您。例如您可以在asp、jsp、flash甚至Javaapplet中实现同样的功能 现在您有了SAP服务、位于首选位置的代理(php)文件,以及与代理位于同一域的本地javascript。你甚至不需要CORS
如果要将代理放在另一个域中,必须确保php文件发送正确的头。(
Access Control Allow Origin yourdomain
或Access Control Allow Origin*for Allow all
)我需要找到一种通过代理实现这一点的方法:)选项请求是一个CORS“飞行前请求”,因为您使用的是一个不常见的内容类型
头,这使得它成为一个“非简单”CORS请求。非简单请求要求浏览器向服务器发送选项请求,以验证谓词和标题是否符合要求。我在中讨论了非简单请求,其中还链接到。你好,VDP,感谢您的回复!这确实是正确的方法,我将尝试找到一些可以编辑的Javascript代码。再次感谢!
var invocation = new XMLHttpRequest();
var url = 'http://delyo001.you.local:8000/sap/bc/youconsulting/ws/rest/anonymous/z_names_post';
var body = '<result><firstname>perthyrtyrtygop</firstname><lastname>sparta</lastname></result>';
invocation.open('POST', url, true);
invocation.setRequestHeader('X-PINGOTHER', 'pingpong');
invocation.setRequestHeader('Content-Type', 'application/xml');
invocation.send(body);