Api返回“No'Access-Control-Allow-Origin'标头出现在请求的资源上。”

时间:2016-02-08 11:17:03

标签: jquery json api

我有一台Api服务器,它几乎完美无缺。当我的网站调用Api服务器并在下面询问“操作”时,如果它返回0邮件则会抛出错误*

#include <stdio.h>  // printf()
#include <iostream> // cout, endl
#include <iomanip>  // setw(), setfill()

int main(void) 
{
    double const d = 10;

    printf("%04.0f\n", d); 
    std::cout << std::setw(4) << std::setfill('0') << d <<std::endl;

    return 0;
}

AllowCrossSiteJson属性:

0010

如果[AllowCrossSiteJson] [System.Web.Http.HttpPost] public newMessageList GetMessagesbyUser(string userid) { List<MessageList> m = new List<MessageList>(); List<Messages> s = db.Messages.Include(i => i.ToUser).Include(i => i.FromUser).Where(i => i.ToUser.Id.ToString() == userid).ToList(); foreach (var item in s) { m.Add(new MessageList() { Date = item.DateCreated, From = item.FromUser.Username, To = item.ToUser.Username, Message = item.Text, Subject = item.Subject, Key = item.ID.ToString(), FromFirstName = item.FromUser.FirstName, FromLastName = item.FromUser.LastName }); } return new newMessageList() { Count = GetUnreadMessages(s.First().ToUser), MessageList = m }; } 在MessageList中返回0,则返回以下错误:

  

XMLHttpRequest无法加载http://localhost:56905/api/Get/GetMessagesbyUser/?userid=b852e7d4-d663-41d9-8db5-0b253df7c194。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,不允许原点“http://localhost:54623”访问。响应的HTTP状态代码为500。

但是如果它在MessageList中返回1或者更多,它可以完美地运行而不会抛出错误。

有人知道如何解决这个问题吗?如果需要,我可以提供更多代码。

1 个答案:

答案 0 :(得分:3)

在这一行:

return new newMessageList() { Count = GetUnreadMessages(s.First().ToUser), MessageList = m };

您无条件访问s.First()。当然,如果列表为空,它会引发异常。