我们正面临着在那里通过XMLHttpRequest使用Chrome要求越来越失败,以下错误的问题:
无法加载
<server url>
:没有“访问控制允许来源”标头出现在所请求的资源。因此,原产地“<client domain>
”是不允许访问。
此错误是Chrome的特定,因为我们没有在IE中得到这个问题。反正在JavaScript绕过这个错误。
没有,幸好没有。
同样的原产地政策是通过浏览器实施,以防止Javascript代码作出针对不同产地/域比从它被服务的一个请求的安全理念。因此,使开发人员从JavaScript绕过这将是一件坏事。
跨域资源共享(CORS)是使用其他HTTP标头,告诉浏览器,让Web应用程序运行在一个原点(域)有权在不同的起源从服务器访问选定资源的机制。 Web应用程序使得跨来源HTTP请求时,它请求具有比其自己的原点不同来源(域,协议和端口)的资源。
来源:Cross-Origin Resource Sharing (CORS)
如果你在API的控制:
添加包含您的请求源自域的Access-Control-Allow-Origin
头。
如果你不是在API的控制:
问API的开发者有您的域名添加到Access-Control-Allow-Origin
头。
编辑:
添加正确的标题不会“发出请求的OPTIONS
请求,而服务器只接受POST
”。
该OPTIONS
请求是preflight request检查,看看是否CORS调用实际上可以做。如果预检要求有正确的头球攻门,POST
请求将遵循您可以在下面的图片中看到:
你可以找到所有的基本信息CORS在文章Understanding CORS
虽然它的限制,可以尝试在任何地方使用CORS https://github.com/Rob--W/cors-anywhere或Chrome扩展here,允许你绕过CORS(请确保您关闭这个功能时不测试,因为它会导致与来自其他网站的请求问题)