Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net jquery无代理跨域投递到wcf服务_.net_Jquery_Ajax_Wcf_Cross Domain - Fatal编程技术网

.net jquery无代理跨域投递到wcf服务

.net jquery无代理跨域投递到wcf服务,.net,jquery,ajax,wcf,cross-domain,.net,Jquery,Ajax,Wcf,Cross Domain,我正试图解决一个复杂的问题 我有一个wcf服务(.net 4.0)托管在服务器1上。服务器1与PCI兼容 服务器2是一个客户端网站。这个网站有一个信用卡表单托管。它还有一个jquery插件,可以劫持表单post。服务器2不符合PCI 无法将信用卡表单中的数据发布到服务器2 因此,我试图从jquery插件调用我的wcf服务(json in,json out)。我不能在服务器2上使用代理,因为这将意味着我的帖子数据将进入该服务器 因此,表单数据必须从客户机直接传输到服务器1,同时完全绕过服务器2 我

我正试图解决一个复杂的问题

我有一个wcf服务(.net 4.0)托管在服务器1上。服务器1与PCI兼容

服务器2是一个客户端网站。这个网站有一个信用卡表单托管。它还有一个jquery插件,可以劫持表单post。服务器2不符合PCI

无法将信用卡表单中的数据发布到服务器2

因此,我试图从jquery插件调用我的wcf服务(json in,json out)。我不能在服务器2上使用代理,因为这将意味着我的帖子数据将进入该服务器

因此,表单数据必须从客户机直接传输到服务器1,同时完全绕过服务器2

我看到了几篇关于在服务器1上使用crossdomain.xml文件的帖子,但是我仍然收到一个错误:

无法加载XMLHttpRequest . 起源不是 允许的 访问控制允许源

有没有办法通过json in和json out对WFC服务进行跨域ajax调用

我不一定要使用jQueryAjax来实现这一点。如果您有另一个使用jquery跨域发送数据的解决方案,我很想听听

编辑:

为了澄清,我的服务是这样的

PaymentResponse SubmitCreditCardPayment(CreditCardRequest request);
请求和响应对象只是具有属性的类(
DataContract
/
DataMember
)。

您尝试过吗

这是一种从客户端调用server1上的服务的简单方法,方法是使用对源目标没有限制的脚本标记。要在js环境中解释json响应,需要回调(比如
foo(data)
),并且需要在ajax查询中将此回调名称设置为get参数。目标ajax服务将通过调用foo来封装他的json响应
foo({json:things})

编辑: 回应你的评论;:您已经测试了JSON-P,但它不安全(使用GET):

你说得对,JSON-p对安全性不是很好。但是CORS会减少应用程序允许的浏览器数量(仅限于最新的浏览器)。您收到的错误消息是CORS错误消息。如果您是在js中提出请求的,那么您只是在CORS的实现中遇到了问题,较旧的浏览器将需要JSON-P回退

因此,即使使用jquerymagicajax函数,您也会遇到使用错误的安全化json-p或错误的支持cor的问题

另一个解决方案是将server2作为server1的子域,但对于信用卡支付,我认为这不是您的情况


crossdomain.xml文件只存在于Flash应用程序中,而不是js,但是您可以使用它在Flash(gasp)中完成整个ajax过程,减少允许再次使用您的应用程序的人数,但是基于(最近)Flash支持。天哪,我在说flash是一个真正的解决方案

是的,我有。jsonp只在get请求中工作,这意味着我必须通过查询字符串传递信用卡信息。这并不理想,因为web服务器随后会记录这些数据,这违反了PCI。