小编use*_*565的帖子

如何使用spring和jquery设置真正的跨域策略

我是网络开发的新手,经过网络的大量努力,我找到了解决方案.我正在分享它,因为我觉得它没有很好的文档记录,可以被其他人使用,因为我需要一些反馈.

我想给特定的域访问API.

首先,我尝试设置请求的标头但由于两个原因它根本不起作用.

第一个原因是我没有在crossdomain.xml中允许它:

    <cross-domain-policy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.adobe.com/xml/schemas/PolicyFile.xsd">
          <allow-http-request-headers-from domain="domain1WithoutSlashAtTheEnd" headers="*"/>
          <allow-http-request-headers-from domain="domain2WithoutSlashAtTheEnd" headers="*"/>
    </cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)

第二个原因是我尝试设置"access-control-allow-origin"标题,而它没用.像这样的任何自定义标头都会被忽略.实际上,服务器不需要任何类似的东西,他的默认行为允许我获得调用的原点(域),我可以在过滤器中处理它,如下所示:

    String origin = hsRequest.getHeader("Origin");
    if (allowedDomainList.contains(origin)) {
      hsResponse.setHeader("Access-Control-Allow-Origin", origin);
    } else {
      throw new SomeException("domain not allowed");
    }
Run Code Online (Sandbox Code Playgroud)

其中"allowedDomainList"是一个String列表,其中我给出了允许访问我的API的所有域.它似乎工作正常.你怎么看待这件事?你会更具体地说:

    headers="*"
Run Code Online (Sandbox Code Playgroud)

也许只说"Access-Control-Allow-Origin".然后我看到有一个"安全"属性,我不知道该怎么做.

我的代码我也有问题:

    <!DOCTYPE cross-domain-policy 
    SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
      <cross-domain-policy>
        <allow-access-from domain="*" />
      </cross-domain-policy>
Run Code Online (Sandbox Code Playgroud)

我想知道它如何干扰我的政策行为.它似乎没有影响,但我不清楚crossdomain.xml.

最后一点是关于jQuery(http://api.jquery.com/jQuery.ajax/).如果我们无法在服务器端获取它们,为什么jQuery有设置标题的东西?另外,它有两种"给"标题的方式:使用"beforeSend"和"headers".这两点对我来说没有意义,正如你上面所看到的,它让我最终失去了很多时间!

提前感谢您的回复!

java jquery spring-mvc access-control

5
推荐指数
1
解决办法
1419
查看次数

.NET中的货币格式在金额和货币之间给出了空格

我在C#中遇到货币格式问题.我正在使用框架2.0.

当我使用这段代码时:

CultureInfo culture = new CultureInfo("fr-FR", false);
NumberFormatInfo numberFormatInfo = (NumberFormatInfo)culture.NumberFormat.Clone();
numberFormatInfo.CurrencySymbol = "CHF";
Run Code Online (Sandbox Code Playgroud)

price.Value.ToString("C", numberFormatInfo)似乎给了我一个金额与货币之间的空格的字符串.那太糟了!我绝对需要一个不间断的空间!到底是怎么回事?我错过了格式属性还是C#标准?

谢谢你的帮助!

所以基本上你想要price.Value.ToString("C",numberFormatInfo).Replace('','\ u00A0');? 至少应该是非破坏空间的代码. - 科拉克

与上面的评论员完全相同,但使用asci-values代替; > price.Value.ToString("C",numberFormatInfo).Replace((char)32,(char)160); (160是很多>更容易记住,至少对我来说:)) - 弗林德伯格

.net c# format formatting currency

4
推荐指数
3
解决办法
3589
查看次数

标签 统计

.net ×1

access-control ×1

c# ×1

currency ×1

format ×1

formatting ×1

java ×1

jquery ×1

spring-mvc ×1