繁体   English   中英

dojo / request / xhr在不同的域上调用Perl Web Service-获取脚本错误

[英]dojo/request/xhr calling Perl Web Service on different domain -getting scripting errors

我了解Dojo的XHR机制支持CORS,但默认情况下设置X-Requested-With。 我只需要设置标题= {“ X-Requested-With”:null}

因此,我正在使用dojo / request / xhr来调用Perl Web服务(Catalyst框架)

 xhr.get(url, {
        handleAs: "json",
        headers: {"X-Requested-With": null}

我正在使用Fiddler,这是JSON字符串:

{
   "data" : [
      {
         "structure" : [
            {
               "name" : "State"
            }
            ],
         "dataSource" : [
            {
               "State" : "CA",
               "Id" : 1
            }
           ]
      }
   ]
}

Fiddler返回的HTTP结果为200,但dojo.then {}出现错误

"Unable to load http://Server:3000/state/ status: 0"

我还尝试使用dojo / request / script调用Perl Web服务(Catalyst框架)

script.get(url, {
       jsonp: "callback"
   }).then(...

但是我收到脚本错误:

JavaScript critical error at line 2, column 11 in http://Server:3000/state/?callback=dojo_request_script_callbacks.dojo_request_script0\n\nSCRIPT1004: Expected ';'

它突出显示“数据”之后的“:”。 我不相信这个格式错误的json字符串,因为我的MVC控制器方法可以使用WebClient的DownloadStringTaskAsync调用Perl服务器,并将该值作为ContentString返回。

有任何想法吗??

如果您使用的是CORS,您不仅需要设置X-Requested-With标头,还需要做更多的事情。 您还必须确保服务器发送正确的标头,它必须发送Access-Control-Allow-Origin标头,并且可能还发送Access-Control-Request-Header标头,例如:

Access-Control-Allow-Origin: *
Access-Control-Request-Header:  x-requested-with

如果您使用的是JSONP,则您的Web服务必须支持JSONP,这意味着它将整个结果包装在回调函数中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM