servicestack,xmlhttprequest,Javascript,Html,Ajax,servicestack,Xmlhttprequest" /> servicestack,xmlhttprequest,Javascript,Html,Ajax,servicestack,Xmlhttprequest" />

Javascript 无法加载XMLHttpRequest。无访问控制仅允许在电话后和通过实际的本地网站进行来源

Javascript 无法加载XMLHttpRequest。无访问控制仅允许在电话后和通过实际的本地网站进行来源,javascript,html,ajax,servicestack,xmlhttprequest,Javascript,Html,Ajax,servicestack,Xmlhttprequest,我看到很多关于这方面的请求,看起来有点像,没有看到我的特殊问题,但我很可能错过了。如果是的话,我道歉 我正在制作一个调用服务堆栈服务的网站。该服务在服务器上发布和托管 我之前在尝试调用该服务时遇到此错误,并发现添加此 base.SetConfig(new EndpointHostConfig { GlobalResponseHeaders = { { "Access-Control-Allow-Origin", "*

我看到很多关于这方面的请求,看起来有点像,没有看到我的特殊问题,但我很可能错过了。如果是的话,我道歉

我正在制作一个调用服务堆栈服务的网站。该服务在服务器上发布和托管

我之前在尝试调用该服务时遇到此错误,并发现添加此

            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语句

更让我困惑的是,如果我使用chrome的邮递员插件对服务发出实际的post请求。它毫无问题地工作

有人知道我做错了什么吗

编辑#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>
请求URL:https://pirates.com/SHIPSWS/shipDemo
请求标题警告:显示临时标题。
接受:*/*
内容类型:application/x-www-form-urlencoded;字符集=UTF-8
来源:http://localhost:58032
推荐人:http://localhost:58032/Default.aspx
用户代理:Mozilla/5.0(Windows NT 6.1;WOW64)AppleWebKit/537.36(KHTML,如Gecko)Chrome/35.0.1916.153 Safari/537.36
表单数据视图源视图URL编码
弓:前面
身体内容:yarrrrrr材料

在站点中编辑#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 + '">';
                                },
                            }
                        ]
                    });
$.ajax
({
url:“https://pirates.com/SHIPSWS/shipDemo/ships/“+this.value+”?格式=json”,
成功:功能(数据){
ShipList=数据;
电子邮件=$(“#EmailTable”).dataTable({
是的,
“aaData”:发货清单,
“aoColumns”:[
{
“缝合”:“电子邮件地址”,
“mData”:“电子邮件地址”
},
{
“针”:“名字”,
“mData”:“firstName”
},
{
“缝合”:“姓氏”,
“mData”:“lastName”
},
{
“缝线”:“船号”,
“mData”:“shipNumber”
},
{
“缝合线”:“船舶尺寸”,
“mData”:“船舶尺寸”
},
{
“缝合”:“选择”,
“mData”:“电子邮件地址”,
“mRender”:功能(数据、类型、完整){
返回“”;
},
}
]
});

您是否有权访问该服务,即您是所有者吗?该服务的所有者需要在
访问控制允许来源
标题部分中允许您的来源(您的域)


因此,在您正在调用的服务上,请确保设置了标题“访问控制允许来源”:“

,以便在再次使用它之后,post调用将发送yarrrrrr 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();
    }
现在它就像一个符咒。谢谢大家的帮助

(要解码html,只需对服务中的数据使用此选项)

函数htmlDecode(值){
返回$('').html(value.text();
}

我是该服务的所有者,从网站上获取该服务的呼叫效果良好,我认为我问题中的base.setconfig部分也应该负责POST呼叫。首先,使用您最喜欢的浏览器调试/开发工具检查POST过程中发送和接收的标题,这将帮助您找到可能有一些问题需要解决。您的服务器是否正确处理请求?您是否可以显示一个正在工作的GET请求的示例?网站是http,但该网站仍然能够使用服务成功执行GET调用。我无法读取请求头。
$.ajax({
                type: 'POST',
                url: "https://pirates.com/SHIPSWS/shipDemo",
                data: {
                    "Bow": $("#BowTypes").val(),
                    "BodyContent": htmlEncode(CKEDITOR.instances.body.getData())
                },
                success: function (data) {
                    EmailBody = data;
                }
            })
function htmlDecode(value){
  return $('<div/>').html(value).text();
}