我正在try 向(我拥有的)WCF服务发出跨域HTTP请求.我已经阅读了几种处理跨域脚本限制的技术.因为我的服务必须同时支持GET和POST请求,所以我不能实现某些src是GET请求的URL的动态脚本标记.由于我可以自由地在服务器上进行更改,因此我已经开始try 实现一种解决方法,其中包括配置服务器响应以包括"Access-Control-Allow-Origin"标头和带有和OPTIONS请求的"印前判断"请求.我是从这个帖子中得到这个 idea 的:Getting CORS working

在服务器端,我的web方法是在HTTP响应中添加"Access Control Allow Origin:*".我可以看到,现在的回复确实包含了这个标题.我的问题是:如何"预飞"请求(选项)?我正在使用jQuery.getJSON发出GET请求,但浏览器会立即取消该请求,并使用以下臭名昭著的命令:

Origin http://localhost is not allowed by Access-Control-Allow-Origin

Is anyone familiar with this CORS technique? What changes need to be made at the client to preflight my request?

谢谢

推荐答案

在飞行前请求期间,您应该看到以下两个标题:访问控制请求方法和访问控制请求标题.这些请求头请求服务器发出实际请求的权限.您的飞行前响应需要确认这些标题,才能使实际请求生效.

例如,假设浏览器发出具有以下标题的请求:

Origin: http://yourdomain.com
Access-Control-Request-Method: POST
Access-Control-Request-Headers: X-Custom-Header

然后,服务器应使用以下标题进行响应:

Access-Control-Allow-Origin: http://yourdomain.com
Access-Control-Allow-Methods: GET, POST
Access-Control-Allow-Headers: X-Custom-Header

请特别注意访问控制允许标头响应标头.此标头的值应与访问控制请求标头请求标头中的标头相同,且不能为"*".

一旦您向印前判断请求发送此响应,浏览器将发出实际请求.您可以在此处了解更多关于CORS的信息:http://www.html5rocks.com/en/tutorials/cors/

Jquery相关问答推荐

jQuery ajax 调用默认超时值

纯css关闭按钮

如何在循环内创建动态变量名称?

数据表警告(表 id = 'example'):无法重新初始化数据表

清除并刷新 jQuery Chosen 下拉列表

jQuery UI 自动完成宽度未正确设置

在 800px 后在 scrollDown 上显示 div

从 iframe 访问父窗口的元素

确定 JavaScript 值是否为整数?

如何同时使用 requireJS 和 jQuery?

使用 jQuery 刷新(重新加载)页面一次?

Rails 5:如何将 $(document).ready() 与 turbo-links 一起使用

如何使用 JSON、jQuery 将一组复杂对象发布到 ASP.NET MVC 控制器?

Underscore.js 和 jQuery 互补吗?

延迟jquery悬停事件?

如何在页面加载时启动 jQuery Fancybox?

图片转Base64

自调用函数前的分号?

textarea 的 val() 与 text()

使用 Chosen 插件更改 Select 中的 Select