这是一个烦人的问题,我不认为只有IE出现此问题。基本上,我有一个Node.js服务器,从该服务器进行跨域调用以获取一些JSON数据进行显示。
这需要是一个JSONP调用,我在URL中提供了一个回调。我不确定的是,该怎么做?
因此,网站(domainA.com)的HTML页面带有这样的JS脚本(在Firefox 3中一切正常):
<script type="text/javascript">
var jsonName = 'ABC'
var url = 'http://domainB.com:8080/stream/aires/' //The JSON data to get
jQuery.getJSON(url+jsonName, function(json){
// parse the JSON data
var data = [], header, comment = /^#/, x;
jQuery.each(json.RESULT.ROWS,function(i,tweet){ ..... }
}
......
</script>
现在我的Node.js服务器非常简单(我正在使用express):
var app = require('express').createServer();
var express = require('express');
app.listen(3000);
app.get('/stream/aires/:id', function(req, res){
request('http://'+options.host+':'+options.port+options.path, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log(body); // Print the google web page.
res.writeHead(200, {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Credentials': 'true'
});
res.end(JSON.stringify(JSON.parse(body)));
}
})
});
如何更改这两个,以便它们可以在IE中使用跨域GET?我一直在搜索互联网,似乎有些不一样的东西jQuery.support.cors = true;
。似乎也有很多冗长的解决方法。
对于这种类型的东西,我找不到真正的“理想”html" target="_blank">设计模式。
鉴于我对网页和跨域Web服务都拥有控制权,因此我要发送的最佳更改是什么,以确保所有IE版本以及FireFox,Opera,Chrome等的兼容性?
干杯!
假设我们有两个服务器,myServer.com和crossDomainServer.com,我们都控制这两个服务器。
假设我们希望myServer.com的客户端从crossDomainServer.com提取一些数据,首先该客户端需要向crossDomainServer.com发出JSONP请求:
// client-side JS from myServer.com
// script tag gets around cross-domain security issues
var script = document.createElement('script');
script.src = 'http://crossDomainServer.com/getJSONPResponse';
document.body.appendChild(script); // triggers a GET request
在跨域服务器上,我们需要处理以下GET请求:
// in the express app for crossDomainServer.com
app.get('/getJSONPResponse', function(req, res) {
res.writeHead(200, {'Content-Type': 'application/javascript'});
res.end("__parseJSONPResponse(" + JSON.stringify('some data') + ");");
});
然后在客户端JS中,我们需要一个全局函数来解析JSONP响应:
// gets called when cross-domain server responds
function __parseJSONPResponse(data) {
// now you have access to your data
}
在包括IE 6在内的各种浏览器上都能很好地运行。
问题内容: 我正在通过jQuery的$ .ajax函数使用的第三方API上调用POST。但是,当我拨打电话时,出现以下错误: 我从这篇文章中看到这可能是Webkit的错误,所以我在Firefox中尝试了此操作(我正在使用Chrome开发),并且得到了相同的结果。 在这篇文章中,我还尝试通过将$.ajax函数的属性设置为并将设置为来使用jsonp。但是,这导致了500个内部服务器错误。 当我使用–d
问题内容: 我有这个Docker Compose配置,我只需创建一个NodeJS容器并在其中安装Angular CLI。 之后,我可以使用SSH在容器内进行SSH 。可以正常工作,但似乎不起作用。它已正确启动,控制台中没有错误。但是,如果我访问(我将端口4200映射到80),则不会加载任何内容。 我想念什么吗? 问题答案: 在您的Dockerfile中,您缺少Expose行,例如: 尝试将其放在d
问题内容: 我正在为Android创建一个PhoneGap应用。为了从(远程)服务器获取数据,我使用jQuery的$ .ajax()函数进行了REST调用。您必须了解几件事: 通话类型必须为POST 服务器需要JSON数据(至少用户名和密码) 服务器发回JSON数据 代码: 但是,这不起作用。当我使用Firebug查看服务器响应时,什么都没有。使用TcpTrace,我可以看到请求的标头。除了期望的
我将symfony 3迁移到symfony 4.3,并且我的自定义包移动到:src/Bundles/FooBundle。 structure FooBundle:-依赖注入-配置。php-FooExtension。php-Event-Model-Resources-config-services。yml-Service-Twig-Exception-FooBundle。php 和文件bundle/
问题内容: Backbone.js的0.5版更新引入了对该功能的支持。 从主干文档: 请注意,使用真实URL要求您的Web服务器能够正确呈现这些页面,因此也需要进行后端更改。例如,如果您的路由为/ documents / 100,并且浏览器直接访问该URL,则您的Web服务器必须能够提供该页面。为了获得完整的搜索引擎可爬网性,最好让服务器为页面生成完整的HTML …但是,如果是Web应用程序,则只
问题内容: 我正在使用此页面 -http : //ecmazing.com/cors.html-向此资源发出跨域Ajax请求: http //hacheck.tel.fer.hr/xml.pl 它适用于Chrome,Safari和Firefox,但不适用于IE9和Opera。 代码: (预期结果是XML代码字符串。) 自己看看: http : //ecmazing.com/cors.html 在I