Breezejs,跨域

时间:2013-03-20 00:03:19

标签: asp.net-web-api breeze

我有一个轻微的......或者可能是关于breezejs的主要问题.. 我目前的设置是我有两个项目..一个web-api项目,托管breeze-api ..和另一个项目,托管应该使用API​​的客户端应用程序.. 这将给我两个不同的端口,api和客户端运行..

所以我的问题是......有没有什么方法可以轻松地在跨域工作?或者只是为了在自己的域内使用而构建的微风?

提前致谢!

2 个答案:

答案 0 :(得分:3)

越过域名没问题。

好的有问题,但这不是一个微风问题。您正在与浏览器的“Same Origin Policy”进行斗争,这会困扰我们所有人。

你可以规避它。唯一的问题是你想怎么做。这个问题始于“您将支持哪些浏览器”。如果是IE10 +和最新的Chrome和FF,你应该去CORS。如果旧的浏览器和Opera ......你将不得不与JSONP战斗。

请指教。

轻推:猜猜我更喜欢哪一个?在Breeze中已经有一个CORS示例...... the Todo samplethe downloads。它还没有记录,但它在那里等着你。

答案 1 :(得分:0)

Ward'd解决方案非常正确,我只是添加了一个更直接的解决方案。

现在安装包。

Microsoft.AspNet.WebApi.Cors

然后将其添加到web.config

<system.webServer>
<httpProtocol>
<customHeaders>
  <add name="Access-Control-Allow-Origin" value="*"/>
  <add name="Access-Control-Allow-Headers" value="Content-Type"/>
  <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS"/>
</customHeaders>
</httpProtocol>
</system.webServer>

将“Access-Control-Allow-Origin”更改为您的其他网站*是一种安全风险,因为它允许所有人使用它进行开发

然后将此altribrute添加到您希望可访问的资源

[EnableCors(origins: "*", headers: "*", methods: "*")]

再次更改原点,请记住网址末尾没有反斜杠。