跨域请求 - 我错过了啥
Posted
技术标签:
【中文标题】跨域请求 - 我错过了啥【英文标题】:Cross Origin request - what am I missinG跨域请求 - 我错过了什么 【发布时间】:2017-03-25 03:09:04 【问题描述】:我有一个通过 https 提供的页面,比如“example.com/page.php”
在那个页面中有一个 jquery ajax 调用:
$.ajax(
url : "http://example.com/print/printReceipt.php",
dataType:"jsonp",
success:function(data)
alert("Success!");
);
“打印”目录有一个 .htaccess 文件,其中包括:
Header always set Access-Control-Allow-Methods "POST, GET, PUT, OPTIONS, PATCH, DELETE"
Header always set Access-Control-Allow-Origin *
jquery 总是返回错误:
混合内容:“...”处的页面通过 HTTPS 加载,但请求了不安全的脚本“...?callback=jQuery300107312130929496792_1478818377085&_=1478818377088”。此请求已被阻止;内容必须通过 HTTPS 提供。
我错过了什么?
【问题讨论】:
读取错误!您的服务是 https,您不能使用来自它的 http 请求。 【参考方案1】:真的吗?你有你的页面,它是通过 HTTPS 加载的,在你的脚本中,你有这个:
url : "http://example.com/print/printReceipt.php"
你能发现错误吗? (提示:您不能混合使用 HTTPS 和 HTTP)。
只需使用//example.com/print/printReceipt.php
- 无需前缀方法。
【讨论】:
看,它从 https 页面调用 http 页面的事实实际上是它“跨源”的原因。所以是的,我可以将 url 更改为 http 并且它会起作用,但这不是我要问的。我想称之为跨域。 你不能。您不能通过此类调用混合安全和不安全的内容。因此,为什么我告诉你要么在通话中使用 https,要么使用带有//
的协议中立请求
嗯。我可以发誓我读到通过 CORS 可以从 https 页面进行 http 调用。感谢您的帮助。【参考方案2】:
尝试将请求类型也放入您的 ajax 调用中 类型:'GET'
【讨论】:
我在 Ajax 调用中添加了“method: 'GET'”,但没有变化。以上是关于跨域请求 - 我错过了啥的主要内容,如果未能解决你的问题,请参考以下文章
我错过了啥?使用 axios 执行删除请求,使用 mongodb 作为 bakcend 使用 req.params.id 进行故障排除