1

我正准备在几周内向大约 100 名软件开发人员演示 Lightswitch,但遇到了障碍。

我有一个带有两个项目的 VS2012 解决方案:

  • Lightswitch - 简单的数据模型和 ApplicationData.svc
  • Web - 包含一个尝试使用 JQuery Ajax 与 ApplicationData.svc 通信的网页

我的问题是当我尝试运行解决方案并执行 AJAX 命令时,出现以下错误:

XMLHttpRequest cannot load http://localhost:37650/ApplicationData.svc/MyEntities.  Origin
http://localhost:53408 is not allowed by Access-Control-Allow-Origin.

在谷歌搜索了一段时间后,我发现了这个建议,看起来很有希望:

<system.webServer> 
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
    </customHeaders>
  </httpProtocol>
</system.webServer> 

但它并没有解决问题。有任何想法吗?

谢谢!

4

3 回答 3

1

您可能需要添加:

headers: { "If-Match": " *" }

看:

仅使用 .Html 页面的完整 CRUD DataJs 和 KnockoutJs LightSwitch 示例 http://lightswitchhelpwebsite.com/Blog/tabid/61/EntryId/128/A-Full-CRUD-DataJs-and-KnockoutJs-LightSwitch-Example-Using- Only-An-Html-Page.aspx

于 2012-10-01T00:32:36.897 回答
1

我用这个解决了同样的问题:

<httpProtocol>
    <customHeaders>
        <add name="Access-Control-Allow-Origin" value="*" />
        <add name="Access-Control-Max-Age" value="3600" />
        <add name="Access-Control-Allow-Headers" value="Content-Type, Accept, MaxDataServiceVersion" />
        <add name="Access-Control-Allow-Methods" value="PUT, POST, GET, DELETE, MERGE, OPTIONS" />
    </customHeaders>
</httpProtocol>
于 2012-10-01T20:12:20.313 回答
0

我遇到了同样的问题,唯一的问题是我正在创建一个不是 Web 应用程序的 HTML5 JQuery Mobile 应用程序。该应用程序是基于 JQuery 的应用程序,我将通过 PhoneGap 运行。我的问题是,当我从移动应用程序拨打电话时,我遇到了相同的跨域问题。

你用什么浏览器来测试?我正在使用 Chrome,但由于最初的 Options 请求而出现了问题(请参阅http://www.w3.org/TR/cors/)。我尝试了很多可能的解决方案,比如更新配置文件等等,但都无济于事。

我的下一个目标是通过创建一个 IHttpHandler 来拦截初始 Options 请求,我可以将它作为属性应用到我正在使用的 WCF 服务(我是否提到我在 LightSwitch 解决方案的 Server 项目中创建了自定义 WCF 服务?)。

我会及时向大家发布...

保罗

于 2012-10-01T18:28:30.047 回答