请求的资源上不存在“访问控制-允许-源”标头。起源“...”因此不允许访问
我正在使用.htaccess来重写url,我使用html基本标签来使其工作。
现在,当我尝试发出ajax请求时,我收到以下错误:
XMLHttpRequest 无法加载 。请求的资源上不存在“访问控制-允许-源”标头。因此,不允许访问源“”。
http://www.example.com/login.php
http://example.com
我正在使用.htaccess来重写url,我使用html基本标签来使其工作。
现在,当我尝试发出ajax请求时,我收到以下错误:
XMLHttpRequest 无法加载 。请求的资源上不存在“访问控制-允许-源”标头。因此,不允许访问源“”。
http://www.example.com/login.php
http://example.com
使用 addHeader
而不是使用 setHeader
方法,
response.addHeader("Access-Control-Allow-Origin", "*");
*
在上面的行将允许访问所有域
。
对于仅允许访问特定域
:
response.addHeader("Access-Control-Allow-Origin", "http://www.example.com");
查看此博客文章
。
JavaScript 代码受同源策略的限制,这意味着,从 页面上,您只能向位于完全相同域的服务发出 (AJAX) 请求,在这种情况下,完全(不是 - 没有 - 或 )。www.example.com
www.example.com
example.com
www
whatever.example.com
在您的情况下,您的 Ajax 代码正在尝试从 位于 的页面访问 中的服务。http://wordicious.com
http://www.wordicious.com
虽然非常相似,但它们不是同一个域。当它们不在同一域中时,仅当目标的 respose 包含标头时,请求才会成功。Access-Control-Allow-Origin
由于您的页面/服务 从未配置为显示此类标头,因此将显示该错误消息。http://wordicious.com
如前所述,源(带有 JavaScript 的页面所在的位置)和目标(JavaScript 尝试到达的位置)域必须完全相同。
您的案例似乎是拼写错误。看起来像并且实际上是同一个服务器/域。因此,要修复,请平均键入目标和源:使Ajax代码请求页面/服务 http://www.wordicious.com
而不是 http://wordicious.com
。(也许相对放置目标 URL,例如 ,不带域)。http://wordicious.com
http://www.wordicious.com
'/login.php'
如果问题不是像这个问题那样的拼写错误,解决方案是将访问控制允许源
添加到目标域。要添加它,当然取决于该地址后面的服务器/语言。有时,工具中的配置变量可以解决问题。其他时候,您必须自己通过代码添加标头。