处理机架

时间:2016-12-17 11:17:51

标签: ajax cors rack subdomain

在查看其他问题和答案之后,我发现他们并没有真正涵盖我想要做的事情,因此我为什么要问一个新问题。

所以,我建立了一个匹配机架中间件的子域名,我认为我会将api托管在它自己的子域(api.localhost:3000)中。

这在大多数情况下都有效但是如果我尝试发送ajax请求,那么Web浏览器会抛出一个关于CORS的问题。

那么如何为我的子域匹配中间件添加子域的CORS,同时考虑到我在机架中工作。

1 个答案:

答案 0 :(得分:1)

如果你可以阻止使用CORS或jsonp,我建议你这样做。最好的解决方案是定义一个子目录来处理您的API / restful请求。我有类似的情况,当你强迫自己进入CORS又名Header Always Set Access-Control-Allow-Origin *然后你为自己设置了限制。

尽可能避免这些限制。只是我的经验。祝你好运!

我会做类似的事情:

http://www.domain.com/rest/api/items/1

休息是处理Web服务的地方。如果您不需要子域名,请远离子域名。

如果您必须绝对使用CORS并且您知道请求是由您处理的,那么只有您可以使用 jsonp

<强> JSONP

jsonp实际上使用回调函数将您的请求包装在javascript对象中。使用此方法可以处理的数据量有一些限制,但它是一种快速的方法,可以在不设置CORS的情况下使您的跨域请求正常工作。

以下是jsonp请求的示例:

  $.ajax({
           type: "GET",
           url:  "http://www.domain.com/rest/WEB055S?callback=?",
           data: args,
           contentType: "application/json; charset=utf-8",
           dataType: "jsonp"}).
           done(function(data){
               alert(data.ERROR);
           })...