我看到很多关于此的请求,看了一下,没有看到我的特定问题,但我很可能错过了它。如果是这样抱歉。
我正在建立一个呼叫服务堆栈服务的网站。该服务已发布并托管在服务器上。
我在尝试对服务进行GET调用并发现添加此
时遇到此错误 base.SetConfig(new EndpointHostConfig
{
GlobalResponseHeaders = {
{ "Access-Control-Allow-Origin", "*" },
{ "Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS" },
{ "Access-Control-Allow-Headers", "Content-Type" },
},
});
解决了这个问题。然而现在通过网站进行ajax调用
$.ajax({
type: 'POST',
url: "https://pirates.com/SHIPSWS/shipDemo",
data: {
"Bow": $("#BowTypes").val(),
"BodyContent": CKEDITOR.instances.body.getData()
},
success: function (data) {
EmailBody = data;
}
})
我得到了同样的错误
XMLHttpRequest cannot load https://pirates.com/SHIPSWS/shipDemo. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:58032' is therefore not allowed access.
这使我感到困惑,因为我设置了上述内容以及在网站中通过ajax工作之前调用的GET语句,就像魅力一样。
让我感到困惑的是,如果我使用say,邮递员会为chrome添加一个实际的邮件请求。它没有问题。
有人会有任何想法我做错了吗?
编辑#1
从本地网站拨打电话时使用Chrome标题。
Request URL:https://pirates.com/SHIPSWS/shipDemo
Request Headers CAUTION: Provisional headers are shown.
Accept:*/*
Content-Type:application/x-www-form-urlencoded; charset=UTF-8
Origin:http://localhost:58032
Referer:http://localhost:58032/Default.aspx
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36
Form Dataview sourceview URL encoded
Bow:Front
BodyContent:<p>Yarrrrrrr Matey</p>
编辑#2在网站上工作
$.ajax
({
url: "https://pirates.com/SHIPSWS/shipDemo/ships/" + this.value + "?format=json",
success: function (data) {
ShipList = data;
Emails = $("#EmailTable").dataTable({
"bDestroy": true,
"aaData": ShipList ,
"aoColumns": [
{
"sTitle": "Email Address",
"mData": "emailAddress"
},
{
"sTitle": "First Name",
"mData": "firstName"
},
{
"sTitle": "Last Name",
"mData": "lastName"
},
{
"sTitle": "Ship Number",
"mData": "shipNumber"
},
{
"sTitle": "Shipsize",
"mData": "shipsize"
},
{
"sTitle": "Select",
"mData": "emailAddress",
"mRender": function (data, type, full) {
return '<input type="checkbox" class="check1" name="check1" value="' + data + '">';
},
}
]
});
答案 0 :(得分:0)
因此,在使用它之后,后调用将发送
Yarrrrrrr Matey
作为其数据(BodyContent)的一部分。这导致错误。
我最终从这里的另一个问题中抓住了这个功能
function htmlEncode(value) {
//create a in-memory div, set it's inner text(which jQuery automatically encodes)
//then grab the encoded contents back out. The div never exists on the page.
return $('<div/>').text(value).html();
}
并编码了我的ajax调用的一部分
$.ajax({
type: 'POST',
url: "https://pirates.com/SHIPSWS/shipDemo",
data: {
"Bow": $("#BowTypes").val(),
"BodyContent": htmlEncode(CKEDITOR.instances.body.getData())
},
success: function (data) {
EmailBody = data;
}
})
它现在就像一个魅力。感谢大家的帮助!
(解码html只需在服务中的数据上使用它)
function htmlDecode(value){
return $('<div/>').html(value).text();
}
答案 1 :(得分:-1)
您是否可以访问该服务,即您是所有者吗?该服务的所有者需要在Access-Control-Allow-Origin
标题部分中允许您的来源(您的域)。
因此,在您正在调用的服务上,请确保已设置标头"Access-Control-Allow-Origin": "http://yourdomain.com"
。