Lightswitch,AJAX和Access-Control-Allow-Origin

时间:2012-09-30 20:11:12

标签: ajax visual-studio-lightswitch

我准备在几周内向一群约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> 

但它没有解决问题。有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>

答案 2 :(得分:0)

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

您使用什么浏览器进行测试?我正在使用Chrome,因为初始的选项请求,我得到了问题(请参阅http://www.w3.org/TR/cors/)。我尝试过一些可能的解决方案,比如更新配置文件等,但无济于事。

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

我会告诉你......