我应该在哪里添加此功能response.addHeader(" Access-Control-Allow-Origin"," *");避免错误" No' Access-Control-Allow-Origin'标头出现在请求的资源上#34;。
这是我的ajax功能。现在我只能从www.myspansalon.com获得ajax响应。我想从myspansalon.com得到回复。
<script>
function getdetails(rate){
var itemid=jQuery("#itemid").val();
var userid=jQuery("#userid").val();
jQuery("#clear").show();
jQuery("#uservote").text('loading...');
jQuery.ajax({
type: "POST",
url:"http://www.myspansalon.com/joomla/index.php?option=com_flexicontent&format=raw&task=myvoting",
data: {item_id:itemid, user_id:userid, rating:rate }
}).done(function(result){
jQuery("#uservote").text(result);
});
}
</script>
&#13;
答案 0 :(得分:0)
我想您可以尝试xhr.setResponseHeader("Access-Control-Allow-Origin", "*");
,请检查下面的修改后的代码。我不确定它是否会起作用,因为基本上响应头是在服务器中而不是在客户端中设置的。
<script >
function getdetails(rate) {
var itemid = jQuery("#itemid").val();
var userid = jQuery("#userid").val();
jQuery("#clear").show();
jQuery("#uservote").text('loading...');
jQuery.ajax({
type: "POST",
url: "http://www.myspansalon.com/joomla/index.php?option=com_flexicontent&format=raw&task=myvoting",
data: {
item_id: itemid,
user_id: userid,
rating: rate
},
success: function (response, status, xhr) {
xhr.setResponseHeader("Access-Control-Allow-Origin", "*");
if (status == "success") {
alert(response);
} else {
alert(status + ' - ' + xhr.status);
}
}
}).done(function (result) {
jQuery("#uservote").text(result);
});
} < /script>
在服务器端设置响应标头: -
如果webservice网站是用java开发的,并且它使用tomcat作为服务器,那么你可以参考this post。在java Web应用程序中,您可以使用javax.servlet.Filter
类实现(独立于服务器)来执行此操作。但是,看到你发布的代码中使用的 url ,它似乎是 php ,所以你可以follow this link。
答案 1 :(得分:0)
首先,您尝试通过AJAX访问另一个域,因此应在另一个域上启用SOP
(Same-origin policy)。
您可以在header
事件中添加beforeSend
,见下文
beforeSend: function(xhr) {
xhr.setRequestHeader('x-my-custom-header', 'some value');
}