首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >访问-控制-允许-源站不允许源站<origin>

访问-控制-允许-源站不允许源站<origin>
EN

Stack Overflow用户
提问于 2013-09-06 01:50:28
回答 13查看 526.5K关注 0票数 217
代码语言:javascript
复制
XMLHttpRequest cannot load http://localhost:8080/api/test. Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin. 

我读到了有关跨域ajax请求的内容,并且理解了底层的安全问题。在我的例子中,有两台服务器在本地运行,并且喜欢在测试期间启用跨域请求。

代码语言:javascript
复制
localhost:8080 - Google Appengine dev server
localhost:3000 - Node.js server

当页面从节点服务器加载时,我向localhost:8080 - GAE server发出了一个ajax请求。什么是最简单、最安全的(我不想用disable-web-security选项启动chrome )。如果我必须更改'Content-Type',我应该在节点服务器上执行吗?多么?

EN

回答 13

Stack Overflow用户

发布于 2016-06-15 23:54:01

如果您需要在Chrome中快速处理ajax请求,此chrome插件通过添加适当的响应头,自动允许您从任何来源访问任何站点

Chrome Extension Allow-Control-Allow-Origin: *

票数 76
EN

Stack Overflow用户

发布于 2013-09-06 02:42:49

我接受@Rocket hazmat的答案,因为它引导我找到解决方案。我确实需要在GAE服务器上设置标头。我不得不把这些

代码语言:javascript
复制
"Access-Control-Allow-Origin" -> "*"
"Access-Control-Allow-Headers" -> "Origin, X-Requested-With, Content-Type, Accept"

仅设置"Access-Control-Allow-Origin"时出现错误

代码语言:javascript
复制
Request header field X-Requested-With is not allowed by Access-Control-Allow-Headers.

另外,如果需要发送身份验证令牌,也要添加以下内容

代码语言:javascript
复制
"Access-Control-Allow-Credentials" -> "true"

此外,在客户端设置withCredentials

这会导致向服务器发送两个请求,其中一个使用OPTIONS。身份验证cookie不随其一起发送,因此需要在身份验证之外进行处理。

票数 9
EN

Stack Overflow用户

发布于 2018-10-02 12:13:11

在router.js中,只需在调用get/post方法之前添加代码即可。它对我来说工作正常,没有错误。

代码语言:javascript
复制
//Importing modules @Brahmmeswar
const express = require('express');
const router = express.Router();

const Contact = require('../models/contacts');

router.use(function(req, res, next) {
    res.header("Access-Control-Allow-Origin", "*");
    res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
    next();
  });
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18642828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档