如何在服务器上启用跨域请求?
我的服务器上托管有一个 json 文件。当我尝试向 json 文件发出 Ajax“GET”请求时,它失败了。
在 Safari 中查看控制台,显示“无法加载资源”。
Firebug 显示“200 OK”,但未显示响应。即使 Firebug 也不显示 JSON 选项卡。
我相信这是因为使用 AJAX 不允许跨域请求。
我想知道我该如何克服这个问题?另外,如果我想在我的服务器上启用跨域请求,我相信需要创建一个 crossdomain.xml
文件或其他内容。我不确定,但这就是我所知道的。我在谷歌上搜索,但找不到任何相关链接。
对此的任何帮助都将受到高度赞赏。
谢谢。
更新: 我没有使用任何服务器端脚本语言(PHP、ASP.NET 等)。我正在使用纯 HTML 和 JavaScript / jQuery。
UPDATE-2:
我使用以下代码发出跨域请求:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
当我在 Firebug 的“Net”选项卡中看到时,我看到一个 JSON 选项卡,并且能够看到 json 响应。但是,“成功”回调处理程序不会被调用,但“错误”回调处理程序会被调用,并且我收到警告:parseerror
。
知道可能出什么问题吗?
I have a json file hosted on my server. When I try to make an Ajax "GET" request to the json file, it fails.
See the console in Safari, it says "Failed to load resource".
Firebug shows "200 OK", but the response doesn't show up. Even Firebug does not show the JSON tab.
I believe this is because Cross Domain Requests are not allowed using AJAX.
I would like to know how can I overcome this? Also, if I want to enable cross-domain requests on my server, I believe a crossdomain.xml
file or something needs to be created. I am not sure, but this is what I know. I searched on Google, but could not find any relevant links.
Any help in this is highly appreciated.
Thanks.
UPDATE:
I am not using any server-side scripting language (PHP, ASP.NET, etc). I am using Plain HTML and JavaScript / jQuery.
UPDATE-2:
I used the following code to make cross-domain requests:
<script src="jquery-1.6.2.js"></script>
<script>
$(document).ready(function () {
$.ajax({
dataType: 'jsonp',
data: '',
jsonp: 'jsonp_callback',
url: 'http://myhosting.net/myjsonfile.json',
success: function (jsonData) {
alert("success")
alert(jsonData);
},
error: function(errorObj) {
alert(errorObj.statusText);
},
});
});
When i see in Firebug's "Net" tab, I see a JSON tab, and I am able to see the json response. However, the "success" callback handler doesn't get called, but the "error" callback handler gets invoked and I get the alert saying parseerror
.
Any idea what could be wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在 php 中的目标服务器上
:
如果您不想使用服务器脚本语言:将其放入(linux)控制台
并添加到您的 .htaccess 文件中
on target server
in php:
in case you don't want to use server-scripting language: put this in (linux) console
and to your .htaccess file add
将其放入您的 .htaccess 中,普通的 ajax 就可以工作
Put this in your .htaccess and plain ajax works
genesis 给出的解决方案对我有用,但是我不得不省略网址上的尾部斜杠。 IE:
the solution given by genesis worked for me, however I had to omit the trailing slash on the url. ie: