[英]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.